Ho difficoltà a capire gli errori sottostanti con il codice qui sotto:Qual è il punto di un metodo statico in una classe non statica?
class myClass
{
public void print(string mess)
{
Console.WriteLine(mess);
}
}
class myOtherClass
{
public static void print(string mess)
{
Console.WriteLine(mess);
}
}
public static class Test
{
public static void Main()
{
myClass mc = new myClass();
mc.print("hello");
myOtherClass moc = new myOtherClass();
moc.print("vhhhat?");
//This says I can't access static method in non static context, but am I not?
}
}
non riesco mai a pensare a una ragione per la quale si potrebbe dichiarare un metodo statico in una classe non statica, quindi perché non voglio NET genera un errore di eccezione.
Inoltre,
moc.print("vhhhat?");
Ciò dire che non posso accedere al metodo statico in un contesto non statico, ma prova e principale sono statici, che cosa sta riferendo?
Vedi 'XmlReader.Create' per un esempio di un metodo statico in una classe non statica. –
Il problema è che i nomi sono cattivi. Un "metodo statico" in realtà dovrebbe essere chiamato qualcosa come un "metodo condiviso", come lo è in VB. Una classe è un progetto per la costruzione di oggetti, ma le classi statiche non sono costruibili, quindi non dovrebbero essere chiamate classi. Di nuovo, VB ha capito bene e li chiama "moduli". Quando i nomi sono descrittivi, rispondere alla domanda diventa più semplice. La tua domanda è: perché dovresti avere un "metodo condiviso" che è in una classe, non in un modulo? Risposta: per condividerlo tra istanze della sua classe. –