tengo problemas para entender los errores subyacentes con el código de abajo:¿Cuál es el punto de un método estático en una clase no estática?
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?
}
}
no puedo nunca pensar en una razón por qué se podría declarar un método estático en una clase no estática, así que por qué no va a .NET lanzar un error de excepción.
Además,
moc.print("vhhhat?");
Esto va a decir que no puedo acceder método estático en el contexto no estática sino Prueba y principal son estáticos, lo que se refería?
Véase 'XmlReader.Create' para un ejemplo de un método estático en una clase no estática. –
El problema es que los nombres son malos. Un "método estático" realmente debería llamarse algo así como un "método compartido", como lo es en VB. Una clase es un modelo para la construcción de objetos, pero las clases estáticas no son construibles, por lo que no deberían llamarse clases. Nuevamente, VB lo hace bien, y los llama "módulos". Cuando los nombres son descriptivos, responder la pregunta se vuelve más fácil. Su pregunta es: ¿por qué tendría un "método compartido" que está en una clase, no en un módulo? Respuesta: Para compartirlo entre las instancias de su clase. –