Поделиться через


Ошибка компилятора 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#)