Доступ к статической переменной-члену из экземпляра класса

#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 — ваш комментарий не имеет большого значения, поскольку в нем не указано, почему язык ограничивает его до такой степени. А также не говорите мне, для какого языка я мог бы лучше подойти. Я ничего не сказал о своих предпочтениях в отношении синтаксиса