#class #c#-4.0 #member #static-members
#класс #c #-4.0 #Участник #статические члены
Вопрос:
Учитывая следующее
class Foo
{
public static int Bar { get; set; }
}
public static void Main(string[] args)
{
var foo = new foo();
//Erroneous member access here
var value = foo.Bar;
//Correct member access here
var value = Foo.Bar;
}
Вопрос: Почему нельзя получить доступ к статической переменной через экземпляр этого класса — в конце концов, самому объекту разрешено обращаться к статическим переменным-членам из with-в его собственных процедурных вызовах.
Комментарии:
1. Существует только одна реализация свойства Bar, поскольку вы объявили его статическим . Использование «foo.Bar» не имеет особого смысла, значение свойства вообще не зависит от значения «foo». Таким образом, компилятор настраивает ваш нос, думая, что вы совершаете распространенную ошибку объектно-ориентированного программирования. Вы. Примечательно, что VB.NET допускает такой синтаксис, может быть, вам больше нравится этот язык.
2. @HansPassant — ваш комментарий не имеет большого значения, поскольку в нем не указано, почему язык ограничивает его до такой степени. А также не говорите мне, для какого языка я мог бы лучше подойти. Я ничего не сказал о своих предпочтениях в отношении синтаксиса