Ошибка компилятора CS0188
Обновлен: Ноябрь 2007
Сообщение об ошибке
Объект "это" невозможно использовать, пока всем его полям не будут заданы значения
The 'this' object cannot be used before all of its fields are assigned to
Конструктор должен задать значения всех полей в struct перед тем, как осуществить вызов метода в struct.
Если эта ошибка появляется при попытке инициализации свойства в конструкторе структуры, для ее устранения нужно изменить параметр конструктора для указания не самого свойства, а резервного поля. Следует избегать в структурах автоматически реализуемых свойств, поскольку у них нет резервного поля и поэтому они не могут быть инициализированы каким-либо образом из конструктора.
Дополнительные сведения см. в разделе Использование структур (Руководство по программированию на C#).
Пример
Следующий пример приводит к возникновению ошибки CS0188:
// CS0188.cs
// compile with: /t:library
namespace MyNamespace
{
class MyClass
{
struct S
{
public int a;
void Foo()
{
}
S(int i)
{
// a = i;
Foo(); // CS0188
}
}
public static void Main()
{ }
}
}
См. также
Ссылки
Структуры (Руководство по программированию на C#)
Автоматически реализуемые свойства (Руководство по программированию на C#)