У меня есть проблемы с пониманием основные ошибки с кодом ниже:Что такое статический метод в нестационарном классе?
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?
}
}
Я никогда не могу придумать причину, почему можно было бы объявить статический метод в нестатической классе, так почему не .NET выбросить ошибку исключения.
Кроме того,
moc.print("vhhhat?");
Это сказать, что я не могу получить доступ к статическому методу в не статическом контексте, но испытания и основных являются статическим, что это в виде?
Смотрите 'XmlReader.Create' для примера статического метода в нестационарном классе. –
Проблема в том, что имена плохие. «Статический метод» действительно должен называться чем-то вроде «общего метода», как в VB. Класс является планом построения объектов, но статические классы не являются конструктивными, поэтому их нельзя называть классами. Опять же, VB понимает это правильно и называет их «модулями». Когда имена являются описательными, ответы на вопрос становятся проще. Ваш вопрос: почему у вас есть «общий метод», который находится в классе, а не в модуле? Ответ. Чтобы поделиться им между экземплярами своего класса. –