-1

在下面第 1 行的代码中,编译器显示错误:“Use of possible unassigned field 'IntField'”,但对于第 2 行,错误是“Use of possible unassigned local variable 'structObj'”。为什么不同的错误?

class Program
{
    static void Main(string[] args)
    {

        StructA structObj;

        Console.WriteLine(structObj.IntField); //Line :1
        Console.WriteLine(structObj.IntProperty); //Line :2            

        Console.ReadKey();
    }
}


struct StructA
{
    public int IntField;
    public int IntProperty { get; set; }
}
4

2 回答 2

0

因为StructA是一个结构并且IntField是一个字段。

StructA structObj = new StructA()在你使用它之前尝试一下。

我认为错误之间差异的原因是属性转换为方法。并且不可能在未初始化的对象上调用方法。

于 2016-10-18T13:10:50.800 回答
0

这里需要为结构调用 new() ,因为如果不使用 New 运算符,则字段保持未分配状态,并且在所有字段都初始化之前无法使用对象。

因此,对于财产价值的初始化,它必须是

StructA structObj = new StructA();

您可以尝试不使用 new for only 结构中的变量,但需要初始化,因此只需分配值

structObj.IntField= 1;

但是对于属性,您需要 new()。

于 2016-10-18T13:27:26.463 回答