Cosa significa quando aggiungi la parola chiave statica a un metodo?
public static void doSomething(){
//Well, do something!
}
Puoi aggiungere la static
parola chiave alla classe? Cosa significherebbe allora?
Cosa significa quando aggiungi la parola chiave statica a un metodo?
public static void doSomething(){
//Well, do something!
}
Puoi aggiungere la static
parola chiave alla classe? Cosa significherebbe allora?
Risposte:
Una static
funzione, a differenza di una normale funzione ( istanza ), non è associata a un'istanza della classe.
Una static
classe è una classe che può contenere solo static
membri e quindi non può essere istanziata.
Per esempio:
class SomeClass {
public int InstanceMethod() { return 1; }
public static int StaticMethod() { return 42; }
}
Per chiamare InstanceMethod
, è necessaria un'istanza della classe:
SomeClass instance = new SomeClass();
instance.InstanceMethod(); //Fine
instance.StaticMethod(); //Won't compile
SomeClass.InstanceMethod(); //Won't compile
SomeClass.StaticMethod(); //Fine
Da un altro punto di vista: considera che vuoi apportare alcune modifiche su una singola stringa. ad esempio, si desidera rendere le lettere maiuscole e così via. si crea un'altra classe denominata "Strumenti" per queste azioni. non ha senso creare un'istanza della classe "Strumenti" perché non vi è alcun tipo di entità disponibile all'interno di quella classe (confronta con la classe "Persona" o "Insegnante"). Quindi usiamo una parola chiave statica per usare la classe "Strumenti" senza fare alcuna istanza e quando si preme punto dopo il nome della classe ("Strumenti") è possibile avere accesso ai metodi desiderati.
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();
}
}
}
Un metodo, un campo, una proprietà o un evento statici sono richiamabili su una classe anche quando non è stata creata alcuna istanza della classe. Se vengono create istanze della classe, non possono essere utilizzate per accedere al membro statico. Esiste una sola copia di campi ed eventi statici e i metodi e le proprietà statici possono accedere solo a campi statici ed eventi statici. I membri statici vengono spesso utilizzati per rappresentare dati o calcoli che non cambiano in risposta allo stato dell'oggetto; ad esempio, una libreria matematica potrebbe contenere metodi statici per il calcolo di seno e coseno. I membri della classe statica vengono dichiarati utilizzando la parola chiave statica prima del tipo restituito della parte
A breve non è possibile creare un'istanza della classe statica: Es:
static class myStaticClass
{
public static void someFunction()
{ /* */ }
}
Non puoi fare così:
myStaticClass msc = new myStaticClass(); // it will cause an error
Puoi fare solo:
myStaticClass.someFunction();
La parola chiave statica, quando applicata a una classe, indica al compilatore di creare una singola istanza di quella classe. Non è quindi possibile "nuovo" una o più istanze della classe. Tutti i metodi in una classe statica devono essere dichiarati statici.
È possibile, e spesso desiderabile, avere metodi statici di una classe non statica. Ad esempio, un metodo factory durante la creazione di un'istanza di un'altra classe viene spesso dichiarato statico poiché ciò significa che non è richiesta una particolare istanza della classe contenente il metodo factor.
Per una buona spiegazione di come, quando e dove vedere MSDN
static
classe non ha alcuna istanza.