编译器显示未分配的struct对象字段和属性的不同错误

时间:2016-10-18 13:06:55

标签: c# properties data-members

在下面的代码行中:1,编译器显示错误:“使用可能未分配的字段'IntField'”但对于第2行:错误是“使用可能未分配的局部变量'structObj'”。为什么会有不同的错误?

<p class="bodytext">Before</p>
<div class="frame-wrapper">
<iframe width="560" height="315" src="https://www.youtube.com/embed/7DRU" frameborder="0" allowfullscreen></iframe>
</div>
<p class="bodytext">After</p>
<p class="bodytext">  &lt;main&gt;Not parsed...&lt;/main&gt;</p>

2 个答案:

答案 0 :(得分:0)

因为StructA是结构而IntField是字段。

在使用之前尝试StructA structObj = new StructA()

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

答案 1 :(得分:0)

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

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

StructA structObj = new StructA();

您可以尝试不使用new仅用于结构中的变量,但需要初始化,因此只需指定值

structObj.IntField= 1;

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