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