gpt4 book ai didi

c# - 初始化多个 List 与多个 List

转载 作者:太空宇宙 更新时间:2023-11-03 17:50:39 25 4
gpt4 key购买 nike

我曾经在我的代码中有以下类

public class SomeListClass
{
public List<Boolean> ListA {get; set;}
public List<Boolean> ListB {get; set;}

public List<String> ListStringsA {get; set;}
public List<String> ListStringsB {get; set;}
public List<String> ListStringsC {get; set;}
public List<String> ListStringsD {get; set;}

public void InitLists()
{
ListStringsA = ListStringsB = ListStringsC = ListStringsD = new List<String>();
ListA = ListB = new List<Boolean>();
}
}

使用此初始化和以下代码我注意到了什么:

SomeListClass itm = new SomeListClass();
itm.InitLists();
itm.ListStringsA.Add("TestString");
itm.ListA.Add(true);
  • 如果我将一个字符串添加到 ListStringsA,那么它只会添加到 ListStringsA
  • 如果我向 ListA 添加一个 bool 值,它会自动添加到 ListB

所以结果是:

ListStringsA = {"TestString"}
ListStringsB = {}
ListStringsC = {}
ListStringsD = {}
ListA = {true}
ListB = {true}

这是什么原因?有人能给我一些解释这种奇怪行为的文档吗?我似乎找不到任何东西。

注意:这解决了它:

   public void InitLists()
{
ListStringsA = ListStringsB = ListStringsC = ListStringsD = new List<String>();
ListA = new List<Boolean>();
ListB = new List<Boolean>();
}

注意:一些简化的生产代码:

我得到一个名为 objectListSomeListObject 类型的列表(见下文)

public class SomeListObject {
public String SomeListObjectName {get; set;}
public Boolean SomeListObjectNeeded {get; set;}
public Boolean SomeListObjectOk {get; set;}
}

列表包含 2 个项目:

objectList = {{SomeListObjectName  = "PersonA", SomeListObjectNeeded  = true, SomeListObjectOk = false},{SomeListObjectName  = "PersonB", SomeListObjectNeeded  = true, SomeListObjectOk = false}}

然后我做一个foreach:

SomeListClass itm = new SomeListClass();
itm.InitLists();
foreach (SomeListObject myObj in objectList )
{
ListStringsA.Add(myObj.SomeListObjectName);
// ListStringsA: {"PersonA"}
// ListStringsB: {}
// ListA: {}
// ListB: {}
ListA.Add(myObj.SomeListObjectNeeded);
// ListStringsA: {"PersonA"}
// ListStringsB: {}
// ListA: {true}
// ListB: {true}
ListB.Add(myObj.SomeListObjectNeeded);
// ListStringsA: {"PersonA"}
// ListStringsB: {}
// ListA: {true, false}
// ListB: {true, false} <=== Say What now???

}

最佳答案

发生这种情况是因为您只为 bool 创建了一个列表和 string ,然后将其分配给变量。 See more .

如果您想为每个属性创建新列表,请参阅:

ListStringsA = new List<string>();
ListStringsB = new List<string>();
ListStringsC = new List<string>();
ListA = new List<bool>();
ListB = new List<bool>();

关于c# - 初始化多个 List<Boolean> 与多个 List<String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28579088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com