Привет всем.
Наткнулся тут на неожиданное для меня поведение, решил запостить.
В шарпе есть хорошая и достаточно часто используемая фича — свойство может называться также как и его тип.
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.
Здравствуйте, Poul_Ko, Вы писали:
P_K>Наткнулся тут на неожиданное для меня поведение, решил запостить.
P_K>В шарпе есть хорошая и достаточно часто используемая фича — свойство может называться также как и его тип.
P_K>Теперь меняем тип свойства на Int32?:
P_K>в результате код не компилируется, компилятор считает выражение Int32.MaxValue обращением к свойству Int32. Наверняка этому есть оправдание в спецификации.
ЕстьАвтор: _FRED_
Дата: 30.03.10
.
P_K>Особенно данное поведение разочаровывает при использовании с енумами, где часто приходится писать SomeEnum.AValue.
Значит требуется выдумать какое-то другое имя для свойства, которое имеет nullable-тип.