variable - using static methods c#




O que é um "método estático" em c#? (6)

A palavra-chave static, quando aplicada a uma classe, diz ao compilador para criar uma única instância dessa classe. Não é possível, então, 'new' uma ou mais instâncias da classe. Todos os métodos em uma classe estática devem ser declarados estáticos.

É possível, e muitas vezes desejável, ter métodos estáticos de uma classe não estática. Por exemplo, um método de fábrica ao criar uma instância de outra classe é frequentemente declarado estático, pois isso significa que uma instância específica da classe que contém o método de fator não é necessária.

Para uma boa explicação de como, quando e onde ver o MSDN

O que significa quando você adiciona a palavra-chave estática a um método?

public static void doSomething(){
   //Well, do something!
}

Você pode adicionar a palavra-chave static à classe? O que significaria então?


De outro ponto de vista: considere que você deseja fazer algumas alterações em uma única string. por exemplo, você quer fazer as letras Maiúsculas e assim por diante. você faz outra classe chamada "Ferramentas" para essas ações. não há nenhum significado de criar uma instância da classe "Tools" porque não há nenhum tipo de entidade disponível dentro dessa classe (compare com a classe "Person" ou "Teacher"). Portanto, usamos palavras-chave estáticas para usar a classe "Ferramentas" sem fazer nenhuma instância disso e, quando você pressiona o ponto após o nome da classe ("Ferramentas"), pode ter acesso aos métodos desejados.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(Tools.ToUpperCase("Behnoud Sherafati"));
        Console.ReadKey();
    }
}

public static class Tools
{
    public static string ToUpperCase(string str)
    {
        return str.ToUpper();

    }
}
}

Logo você não pode instanciar a classe estática: Ex:

static class myStaticClass
{
    public static void someFunction()
    { /* */ }
}

Você não pode fazer assim:

myStaticClass msc = new myStaticClass();  // it will cause an error

Você pode fazer apenas:

myStaticClass.someFunction();

Quando você adiciona uma palavra-chave "estática" a um método, isso significa que a implementação subjacente fornece o mesmo resultado para qualquer instância da classe. Escusado será dizer que o resultado varia com a alteração do valor dos parâmetros


Uma função static , diferente de uma função regular ( instância ), não está associada a uma instância da classe.

Uma classe static é uma classe que pode conter apenas membros static e, portanto, não pode ser instanciada.

Por exemplo:

class SomeClass {
    public int InstanceMethod() { return 1; }
    public static int StaticMethod() { return 42; }
}

Para chamar InstanceMethod , você precisa de uma instância da classe:

SomeClass instance = new SomeClass();
instance.InstanceMethod();   //Fine
instance.StaticMethod();     //Won't compile

SomeClass.InstanceMethod();  //Won't compile
SomeClass.StaticMethod();    //Fine

Variável estática não vincula com objeto da classe. Pode ser acessado usando o nome da classe. Todo objeto da classe compartilhará a variável estática.

Ao tornar a função como estática, ela restringirá o acesso dessa função nesse arquivo.





static