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
参数,putCabinetList=new List()
,@HimBromBeere最初最小值和最大值=0除了前面的注释外:在分配MIN
和MAX
时,使用List
的Add()
方法避免ArgumentOutOfRangeException.productDMList[i].CabinetList.Add(new InventoryDM{MIN=productDMList[i].MIN,MAX=productDMList[i].Max});