Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 要将项目添加到列表中,是否需要创建新对象?_C#_.net - Fatal编程技术网

C# 要将项目添加到列表中,是否需要创建新对象?

C# 要将项目添加到列表中,是否需要创建新对象?,c#,.net,C#,.net,我将向列表中添加一个对象,然后将对象变量设置为null。要将另一个对象添加到列表中,我需要创建一个新对象。我使用的代码如下: UpdateData = new MismatchData(); UpdateData.CINID = currentInLoopCIN_ID; UpdateData.ColumnMapID = <some integer>; UpdateData.WMSValue = <some integer>; lsMismatchData

我将向列表中添加一个对象,然后将对象变量设置为null。要将另一个对象添加到列表中,我需要创建一个新对象。我使用的代码如下:

UpdateData = new MismatchData();
   UpdateData.CINID = currentInLoopCIN_ID;
   UpdateData.ColumnMapID = <some integer>;
   UpdateData.WMSValue = <some integer>;
lsMismatchData.Add(UpdateData);
UpdateData = null;

当然可以。否则,
UpdateData
将为
null
,您无法访问
UpdateData.CINID

但是(使用C#3.0+)您可以使用以下语法将其缩短:

lsMismatchData.Add(new MismatchData() { CINID = currentInLoopCIN_ID, ColumnMapID = <x> });
lsmistchdata.Add(新的mistchdata(){CINID=currentInLoopCIN\u ID,ColumnMapID=});

当然可以。否则,
UpdateData
将为
null
,您无法访问
UpdateData.CINID

但是(使用C#3.0+)您可以使用以下语法将其缩短:

lsMismatchData.Add(new MismatchData() { CINID = currentInLoopCIN_ID, ColumnMapID = <x> });
lsmistchdata.Add(新的mistchdata(){CINID=currentInLoopCIN\u ID,ColumnMapID=});

当然,否则您的引用为空。然后,当您尝试在添加新条目之前设置字段时,将得到一个NullReferenceException


如果不将其设置为null并修改旧对象,则会修改列表中的所有其他条目,因为它们指向同一对象。

当然,否则您的引用为null。然后,当您尝试在添加新条目之前设置字段时,将得到一个NullReferenceException


相反,如果不将其设置为null并修改旧对象,则将修改列表中的所有其他条目,因为它们指向同一对象。

是的,您必须将新对象实例化为变量
UpdateData

UpdateData = new MismatchData();

在再次开始填充其属性之前,以及在再次将其添加到
lsmistmatchdata
之前,否则将出现空引用异常是的,您必须将新对象实例化为变量
UpdateData

UpdateData = new MismatchData();

在您再次开始填充其属性之前,以及在您再次将其添加到
lsmistmatchdata
之前,否则您将得到一个空引用异常,因为您正在将
updatedatedate
设置为空,所以在第二次尝试设置
UpdateData.CINID
时,您将得到一个错误(您将访问一个空对象)

您的null赋值是这里多余的代码行。因为您总是将
新的UpdateData
赋值给您的变量,所以不需要在两者之间重置它

不管是否有空赋值,您仍然需要每次创建一个新实例,否则您只需要更新旧实例

如果要减少代码行数,可以执行以下操作:

lsMismatchData.Add(new UpdateData {
    CINID = currentInLoopCIN_ID,
    ColumnMapID = <some new integer>,
    WMSValue = <some new integer>
});

由于您正在将
UpdateDate
设置为null,因此在第二次尝试设置
UpdateDate.CINID
时会出现错误(您将访问null对象)

您的null赋值是这里多余的代码行。因为您总是将
新的UpdateData
赋值给您的变量,所以不需要在两者之间重置它

不管是否有空赋值,您仍然需要每次创建一个新实例,否则您只需要更新旧实例

如果要减少代码行数,可以执行以下操作:

lsMismatchData.Add(new UpdateData {
    CINID = currentInLoopCIN_ID,
    ColumnMapID = <some new integer>,
    WMSValue = <some new integer>
});

您将对象设置为null,意思是您添加到列表中的对象=null。您应该每次创建一个新对象,但不要将其设置为null。不,在添加到列表之前,我为对象赋值,然后将对象设置为null。@Nathan:列表中的对象没有设置为null。方法中的变量被分配了一个null引用。这样做吗es不会以任何方式影响列表;它仍然包含对对象实例的引用。您将对象设置为null,即添加到列表中的对象=null。您应该每次创建一个新对象,但不要将其设置为null。不,在添加到列表之前,我为对象赋值,然后将对象设置为null。@Nathan:中的对象列表未设置为null。方法中的变量被分配了null引用。这不会以任何方式影响列表;它仍然包含对对象实例的引用。在将项目添加到列表后,我的问题是,当我更改项目值时,这会影响刚刚添加到列表中的项目吗?如果删除
new
assignment和
null
赋值,则会影响已添加的项,是的。如果删除
new
赋值,但保留
null
赋值,则会得到“未设置为对象实例的对象引用”错误。您需要保留
新的
赋值,但您可以删除
空的
赋值。@David感谢您的澄清,这正是我想要的解释。在您将项目添加到列表后,我的问题是,当我更改项目值时,是否会影响列表中刚添加的项目?如果您删除
new
赋值和
null
赋值,则会影响已添加的项,是。如果删除
新的
赋值,但保留
null
赋值,则会得到“对象引用未设置为对象的实例”错误。您需要保留
新的
赋值,但您可以删除
null
赋值。@David感谢您的澄清,这正是我想要的解释。