C#: объясните фичу
От: yenik  
Дата: 16.09.16 14:52
Оценка:
Просветите человека, блуждающего во тьме.

public class Reference
{
    public int Id { get; set; }
}

public class Item
{
    public Reference Reference { get; set; }
}

private static void TryWeirdSyntax()
{
    var item = new Item
        {
            Reference = { Id = 2 } // вот эта строчка
        };
}


Билдится, но падает с NullReferenceException. Наткнулся случайно. Что за новшество? Как правильно использовать такой синтаксис?
Re: C#: объясните фичу
От: Jack128  
Дата: 16.09.16 14:55
Оценка: 4 (1) +4
Здравствуйте, yenik, Вы писали:

Y>Просветите человека, блуждающего во тьме.


Y>
Y>public class Reference
Y>{
Y>    public int Id { get; set; }
Y>}

Y>public class Item
Y>{
Y>    public Reference Reference { get; set; }
Y>}

Y>private static void TryWeirdSyntax()
Y>{
Y>    var item = new Item
Y>        {
Y>            Reference = { Id = 2 } // вот эта строчка
Y>        };
Y>}
Y>


Y>Билдится, но падает с NullReferenceException. Наткнулся случайно. Что за новшество? Как правильно использовать такой синтаксис?


Reference = { Id = 2 } задает свойство Id у существующего экземпляра Reference. В данном случае те нужно писать либо new Item { Reference = new Reference { Id = 2 } } , либо создовать экземпляр Reference в конструкторе Item
Re[2]: C#: объясните фичу
От: yenik  
Дата: 16.09.16 15:05
Оценка:
J>Reference = { Id = 2 } задает свойство Id у существующего экземпляра Reference. В данном случае те нужно писать либо new Item { Reference = new Reference { Id = 2 } } , либо создовать экземпляр Reference в конструкторе Item
Спасибо.
Склероз проклятый, ведь знал об этом.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.