C# 初始化嵌套列表<;T>;

C# 初始化嵌套列表<;T>;,c#,arrays,list,initialization,C#,Arrays,List,Initialization,请参考以下代码 List<ProductDM> productDMList = _orderRepo.GetProductList(32, 12); for (int i=0;i<productDMList.Count;i++) { productDMList[i].CabinetList[i].Min = productDMList[i].Min; productDMList[i].CabinetList[i

请参考以下代码

List<ProductDM> productDMList = _orderRepo.GetProductList(32, 12);
  for (int i=0;i<productDMList.Count;i++)
        {
            productDMList[i].CabinetList[i].Min = productDMList[i].Min;
            productDMList[i].CabinetList[i].Max = productDMList[i].Max;
        }

public class ProductDM
  {
    public List<InventoryDM> CabinetList { get; set; }
    public double Min { get; set; }
    public double Max { get; set; }
 }
public class InventoryDM
 {
    public Double Min { get; set; }
    public Double Max { get; set; }
 }
List productDMList=\u orderepo.GetProductList(32,12);

对于(int i=0;i而言,问题不在于CabinetList是否为空,而在于对象列表是否为空,您可以在调试器中看到这一点。
为了初始化列表,您可以参考本帖的答案:


请注意,您没有字符串列表,但有
对象列表,但概念类似。

问题不在于CabinetList是否为空,而在于对象列表为空,正如您在调试器中看到的那样。
为了初始化列表,您可以参考本帖的答案:


请注意,您没有字符串列表,但有
对象列表,但概念是类似的。

根据您的需求,您可以执行类似的操作

public class ProductDM
{
  public List<InventoryDM> CabinetList { get; private set; }
  public double Min { get; set; }
  public double Max { get; set; }

  public ProductDM()
  {
    CabinetList = new List<InventoryDM>();
  }
}

根据您的要求,您可以这样做

public class ProductDM
{
  public List<InventoryDM> CabinetList { get; private set; }
  public double Min { get; set; }
  public double Max { get; set; }

  public ProductDM()
  {
    CabinetList = new List<InventoryDM>();
  }
}
初始化构造函数中的
橱柜列表时,会阻止

对象引用未设置为对象的实例

例外

除此之外,不要通过索引访问器分配
Min
Max
值:

productDMList[i].CabinetList[i].Min = productDMList[i].Min;
productDMList[i].CabinetList[i].Max = productDMList[i].Max;
您应该使用
List
类型的
Add()
方法:

productDMList[i].CabinetList.Add(new InventoryDM { Min = productDMList[i].Min, Max = productDMList[i].Max });
否则你会被解雇

ArgumentOutOfRange异常

因为您试图访问列表中尚不存在的项。

因为在构造函数中初始化
CabinetList
会阻止

对象引用未设置为对象的实例

例外

除此之外,不要通过索引访问器分配
Min
Max
值:

productDMList[i].CabinetList[i].Min = productDMList[i].Min;
productDMList[i].CabinetList[i].Max = productDMList[i].Max;
您应该使用
List
类型的
Add()
方法:

productDMList[i].CabinetList.Add(new InventoryDM { Min = productDMList[i].Min, Max = productDMList[i].Max });
否则你会被解雇

ArgumentOutOfRange异常


因为您试图访问列表中尚不存在的项。

通过在构造函数中创建新列表并将其分配给
CabinetList
?声明成员不会隐式创建实例。列表在开始时应包含什么?
ProductDM
需要一个在y中接受
list
参数的构造函数我们的
ProductDM
构造函数将
CabinetList=new List()
,@HimBromBeere最初为MIN和MAX=0添加到前面的注释中:在分配
MIN
MAX
时,使用
List
Add()
方法避免ArgumentOutOfRangeException.
productDMList[i].CabinetList.Add(新的InventoryDM{Min=productDMList[i].Min,Max=productDMList[i].Max})通过在构造函数中创建一个新列表并将其分配给
CabinetList
?声明成员不会隐式创建实例。列表在开始时应该包含什么?
ProductDM
需要一个构造函数,该构造函数在
ProductDM
构造函数中接受一个
list
参数,put
CabinetList=new List()
,@HimBromBeere最初最小值和最大值=0除了前面的注释外:在分配
MIN
MAX
时,使用
List
Add()
方法避免ArgumentOutOfRangeException.
productDMList[i].CabinetList.Add(new InventoryDM{MIN=productDMList[i].MIN,MAX=productDMList[i].Max});