Предупреждение компилятора (уровень 1) CS1060
Обновлен: Ноябрь 2007
Сообщение об ошибке
Использование поля "имя", которому, возможно, не присвоено значение. Экземплярным переменным структуры изначально не присвоены значения, если структуре не присвоено значение.
Use of possibly unassigned field 'name'. Struct instance variables are initially unassigned if struct is unassigned.
Если не выполняется явная инициализация членов структуры, то они инициализируются значениями по умолчанию. Значением по умолчанию для типов классов (и других ссылочных типов) является NULL. Если класс не инициализируется до попытки получить к нему доступ, то во время выполнения создается исключение NullReferenceException. Компилятору не удается однозначно определить, инициализирован ли член класса, поэтому CS1060 является предупреждением, а не ошибкой.
Исправление ошибки
- Предоставьте конструктор для struct, который инициализирует все ее члены.
Пример
В следующем коде создается ошибка CS1060, поскольку тип класса U является членом struct S, однако не был инициализирован.
// cs1060.cs
namespace CS1060
{
public class U
{
public int i;
}
public struct S
{
public U u;
// Add constructor to correct the error.
//public S(int val)
//{
// u = new U() { i = val };
//}
}
public class Test
{
static void Main()
{
S s;
s.u.i = 5; // CS1060
//Try these lines instead, and uncomment the constructor in S
// S s = new S(0);
// s.u.i = 5;
}
}
}