Qual è la differenza tra metodi statici in una class non statica e metodi statici in una class statica?

Ho due classi di class A e di class B:

static class ClassA { static string SomeMethod() { return "I am a Static Method"; } } class ClassB { static string SomeMethod() { return "I am a Static Method"; } } 

Voglio sapere qual è la differenza tra ClassA.SomeMethod(); e ClassB.SomeMethod();

Quando è ansible accedere a entrambi senza creare un’istanza della class, perché è necessario creare una class statica anziché utilizzare solo una class non statica e dichiarare i metodi come statici?

L’ unica differenza è che i metodi statici in una class nonstatica non possono essere metodi di estensione .


In altre parole, questo non è valido:

 class Test { static void getCount(this ICollection collection) { return collection.Count; } } 

mentre questo è valido:

 static class Test { static void getCount(this ICollection collection) { return collection.Count; } } 

Una class statica può contenere solo membri statici.

Un metodo statico garantisce che, anche se si dovessero creare più oggetti di class B, utilizzerebbero solo una funzione SomeMethod singola e condivisa.

Tecnicamente, non c’è differenza, tranne che SomeMethod di ClassA deve essere statico.

Controlla questo link

Classi statiche

Metodi statici e non statici

Saluti

Se si dispone di una class non statica contenente solo metodi statici, è ansible creare un’istanza di tale class. Ma non puoi usare questa istanza in maniera significativa. NB: quando non si definisce un costruttore, il compilatore ne aggiunge uno.

Una class statica non ha un costruttore, quindi non è ansible crearne un’istanza. Anche il compilatore dà un errore quando aggiungi un metodo di istanza ad esso (dove intendi un metodo statico).

Un metodo statico appartiene alla class e un metodo non statico appartiene a un object di una class. Cioè, un metodo non statico può essere chiamato solo su un object di una class a cui appartiene. Un metodo statico può accedere solo ai membri statici. Un metodo non statico può accedere sia ai membri statici che non statici perché al momento in cui viene chiamato il metodo statico, la class potrebbe non essere istanziata (se viene richiamata sulla class stessa). Nell’altro caso, un metodo non statico può essere chiamato solo quando la class è già stata istanziata. Un metodo statico è condiviso da tutte le istanze della class. Ogni volta che viene chiamato un metodo in C ++ / Java / C #, viene passato un argomento implicito (il riferimento “this”) insieme a / senza gli altri parametri. Nel caso di una chiamata al metodo statico, il riferimento “this” non viene passato poiché i metodi statici appartengono a una class e quindi non hanno il riferimento “this”.