Есть небольшие сомнения со статическим методом.
Документация гласит, что «Статический метод не может получить доступ к переменной члена экземпляра, ИЛИ статические методы и свойства могут получить доступ только к статическим полям и статическим событиям, поскольку он выполняется намного раньше, чем создается экземпляр». Итак, приведенный ниже код не может скомпилировать
class staticclass
{
int a = 20; //Private member
public static void staticmethod()
{
Console.WriteLine("Value Of Instance member variable is: {0}",a); // Error
}
}
Но мы также знаем, что внутри статического метода мы можем создать экземпляр того же класса.
Итак, немного изменив приведенный выше код, я могу получить доступ к переменной экземпляра в статическом методе
class staticclass
{
int a = 20; //PRivate Memeber
public static void staticmethod()
{
staticclass sc = new staticclass();
Console.WriteLine("Value Of Instance member variable is: {0}",sc.a);
}
}
Это прекрасно компилируется и отображает результат Value Of Instance member variable is: 20
.
Это нормальное поведение? ИЛИ Я не могу понять это правильно?
Я имею в виду, если это так, то Как эти утверждения верны static methods can only access static fields
?
Спасибо.