Nullable<T> и название свойства как название типа
От: Poul_Ko Казахстан  
Дата: 28.10.10 06:06
Оценка:
Привет всем.
Наткнулся тут на неожиданное для меня поведение, решил запостить.

В шарпе есть хорошая и достаточно часто используемая фича — свойство может называться также как и его тип.
    public class SomeClass
    {
        public Int32 Int32 { get; private set; }

        public void SomeMethod()
        {
            this.Int32 = Int32.MaxValue;
        }
    }


Теперь меняем тип свойства на Int32?:
    public class SomeClass
    {
        public Int32? Int32 { get; private set; }

        public void SomeMethod()
        {
            this.Int32 = Int32.MaxValue;
        }
    }

в результате код не компилируется, компилятор считает выражение Int32.MaxValue обращением к свойству Int32. Наверняка этому есть оправдание в спецификации.

Особенно данное поведение разочаровывает при использовании с енумами, где часто приходится писать SomeEnum.AValue.
Brainbench transcript #6370594
Re: Nullable<T> и название свойства как название типа
От: Аноним  
Дата: 28.10.10 06:19
Оценка:
Здравствуйте, Poul_Ko, Вы писали:

P_K>Привет всем.

P_K>Наткнулся тут на неожиданное для меня поведение, решил запостить.
P_K>В шарпе есть хорошая и достаточно часто используемая фича — свойство может называться также как и его тип.

Привет. а в чём хорошесть и в каком случае есть необходимость такого? Зачем вообще в классе может потребоваться такое свойство?
Re: Nullable<T> и название свойства как название типа
От: _FRED_ Черногория
Дата: 28.10.10 06:43
Оценка:
Здравствуйте, Poul_Ko, Вы писали:

P_K>Наткнулся тут на неожиданное для меня поведение, решил запостить.

P_K>В шарпе есть хорошая и достаточно часто используемая фича — свойство может называться также как и его тип.
P_K>Теперь меняем тип свойства на Int32?:
P_K>в результате код не компилируется, компилятор считает выражение Int32.MaxValue обращением к свойству Int32. Наверняка этому есть оправдание в спецификации.

Есть
Автор: _FRED_
Дата: 30.03.10
.

P_K>Особенно данное поведение разочаровывает при использовании с енумами, где часто приходится писать SomeEnum.AValue.


Значит требуется выдумать какое-то другое имя для свойства, которое имеет nullable-тип.
Help will always be given at Hogwarts to those who ask for it.
Re: Nullable<T> и название свойства как название типа
От: GlebZ Россия  
Дата: 28.10.10 06:52
Оценка:
Здравствуйте, Poul_Ko, Вы писали:

P_K>Особенно данное поведение разочаровывает при использовании с енумами, где часто приходится писать SomeEnum.AValue.

Не понял, а причем тут enum'ы. Что касается остального, не согласен что конфликт имён это общепринятая, и хорошая практика.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.