Ошибка компилятора CS1918
Обновлен: Ноябрь 2007
Сообщение об ошибке
Членам свойства "имя" типа "тип" не могут быть присвоены значения с помощью инициализатора объекта, поскольку они имеют тип значения.
Members of property 'name' of type 'type' cannot be assigned with an object initializer because it is of a value type.
Эта ошибка возникает при попытке использовать инициализатор объекта для инициализации свойств, принадлежащих типу, который сам является свойством инициализируемого класса.
Исправление ошибки
- Если необходимо полностью инициализировать поля свойства в инициализаторе объекта, измените тип структуры на тип класса. Если это невозможно, инициализируйте члены структуры в отдельном вызове метода после создания объекта с помощью инициализатора объекта.
Пример
Следующий пример приводит к возникновению ошибки CS1918:
// cs1918.cs
public struct MyStruct
{
public int i;
}
public class Test
{
private MyStruct str = new MyStruct();
public MyStruct Str
{
get
{
return str;
}
}
public static int Main()
{
Test t = new Test { Str = { i = 1 } }; // CS1918
return 0;
}
}
См. также
Ссылки
Инициализаторы объектов и коллекций (Руководство по программированию в C#)