C# 如何在c中向列表中添加对象数组#
让我解释一下 我有一个X班C# 如何在c中向列表中添加对象数组#,c#,asp.net,C#,Asp.net,让我解释一下 我有一个X班 public class X { private List<Y> y; } 如何将y1[0]和y1[1]分配给X的对象 X x1=new X(); x1.y.add(y1[0]); x1.y.add(y1[1]); 它的失败 请帮帮我。你可以用 虽然这只是几个元素,但单独添加它们可能同样有效 由于您的列表是私有的,您可能希望添加一个方法来完成此操作 public void AddRangeToList(List<Y> items) {
public class X
{
private List<Y> y;
}
如何将y1[0]和y1[1]分配给X的对象
X x1=new X();
x1.y.add(y1[0]);
x1.y.add(y1[1]);
它的失败
请帮帮我。你可以用
虽然这只是几个元素,但单独添加它们可能同样有效
由于您的列表是私有的,您可能希望添加一个方法来完成此操作
public void AddRangeToList(List<Y> items)
{
y.AddRange(items);
}
x.AddRangeToList(y1);
x.AddRangeToList(y1.GetRange(0,2));
public X()
{
y = new List<Y>();
}
public Y()
{
z = new List<Z>();
}
public void AddRangeToList(列表项)
{
y、 添加范围(项目);
}
x、 添加范围列表(y1);
x、 AddRangeToList(y1.GetRange(0,2));
看起来你从来没有初始化过你的数组,我会让构造函数来做这个
public void AddRangeToList(List<Y> items)
{
y.AddRange(items);
}
x.AddRangeToList(y1);
x.AddRangeToList(y1.GetRange(0,2));
public X()
{
y = new List<Y>();
}
public Y()
{
z = new List<Z>();
}
public X()
{
y=新列表();
}
公共Y()
{
z=新列表();
}
您可以使用
虽然这只是几个元素,但单独添加它们可能同样有效
由于您的列表是私有的,您可能希望添加一个方法来完成此操作
public void AddRangeToList(List<Y> items)
{
y.AddRange(items);
}
x.AddRangeToList(y1);
x.AddRangeToList(y1.GetRange(0,2));
public X()
{
y = new List<Y>();
}
public Y()
{
z = new List<Z>();
}
public void AddRangeToList(列表项)
{
y、 添加范围(项目);
}
x、 添加范围列表(y1);
x、 AddRangeToList(y1.GetRange(0,2));
看起来你从来没有初始化过你的数组,我会让构造函数来做这个
public void AddRangeToList(List<Y> items)
{
y.AddRange(items);
}
x.AddRangeToList(y1);
x.AddRangeToList(y1.GetRange(0,2));
public X()
{
y = new List<Y>();
}
public Y()
{
z = new List<Z>();
}
public X()
{
y=新列表();
}
公共Y()
{
z=新列表();
}
您应该将列表属性设置为公共属性,而不是私有属性
可访问性级别(C#参考)
-
我将创建一个构造函数来创建列表 public class X
{
public X()
{
Y = new List<Y>();
}
public List<Y> Y { get; private set; }
}
public class Y
{
public Y()
{
Z = new List<Z>();
}
public int A { get; set; }
public List<Z> Z { get; private set; }
}
public class Z
{
public int V { get; set; }
}
您应该将您的列表属性设置为公共属性,而不是私有属性 可访问性级别(C#参考) - 我将创建一个构造函数来创建列表
public class X
{
public X()
{
Y = new List<Y>();
}
public List<Y> Y { get; private set; }
}
public class Y
{
public Y()
{
Z = new List<Z>();
}
public int A { get; set; }
public List<Z> Z { get; private set; }
}
public class Z
{
public int V { get; set; }
}
如果要访问类的属性,需要将它们公开
X x1=new X();
x1.y = new List<Y>(); // need create instant of y before add items
x1.y.Add(y1[0]);
x1.y.Add(y1[1]);
xx1=新的X();
x1.y=新列表();//需要在添加项目之前创建即时y
x1.y.Add(y1[0]);
x1.y.Add(y1[1]);
我会改变课程如下
public class X
{
public List<Y> y { get; set; }
}
public class Y
{
public int a;
public List<Z> z { get; set; }
}
公共类X
{
公共列表y{get;set;}
}
公共Y类
{
公共INTA;
公共列表z{get;set;}
}
如果要访问类的属性,需要将其公开
X x1=new X();
x1.y = new List<Y>(); // need create instant of y before add items
x1.y.Add(y1[0]);
x1.y.Add(y1[1]);
xx1=新的X();
x1.y=新列表();//需要在添加项目之前创建即时y
x1.y.Add(y1[0]);
x1.y.Add(y1[1]);
我会改变课程如下
public class X
{
public List<Y> y { get; set; }
}
public class Y
{
public int a;
public List<Z> z { get; set; }
}
公共类X
{
公共列表y{get;set;}
}
公共Y类
{
公共INTA;
公共列表z{get;set;}
}
tryxx1=newx(){y=newlist()}代码>请定义“其失败”。您是否收到任何对象空引用错误?如果是这样,在类X
构造函数中,创建一个新列表,如y=new list()
那么您的x.Y
实际上是null
,所以请执行x1.Y=newlist()代码>失败,因为未初始化Y的类X列表。您将列表定义为字段,而不是属性。尝试xx1=newx(){y=newlist()}代码>请定义“其失败”。您是否收到任何对象空引用错误?如果是这样,在类X
构造函数中,创建一个新列表,如y=new list()
那么您的x.Y
实际上是null
,所以请执行x1.Y=newlist()代码>失败,因为未初始化Y的类X列表。您将列表定义为字段,而不是属性<代码>x1.y=新列表()代码>将初始化@Damith event,尽管我已按照您的建议进行了更新。它会抛出错误“Object reference not set to a instance of a Object”(对象引用未设置为对象的实例);其中y构成了一个y类型的对象数组。您在前面添加了x1.y=new List()
行了吗?@Damith是的,我添加了。对于您的信息,Y[0]和Y[1]只属于Y类型的对象数组。我不会创建List<>类型的读/写属性,我会使用IEnumerable<>来代替读/写属性。x1.Y=new List()代码>将初始化@Damith event,尽管我已按照您的建议进行了更新。它会抛出错误“Object reference not set to a instance of a Object”(对象引用未设置为对象的实例);其中y构成了一个y类型的对象数组。您在前面添加了x1.y=new List()
行了吗?@Damith是的,我添加了。对于您的信息,Y[0]和Y[1]仅属于类型为Y的对象数组。我不会创建类型为List<>的读/写属性,我会使用IEnumerable<>作为读/写属性。如果您指定了错误,我可以判断出哪里出了错。我更新了它,它仍然是相同的代码,告诉我它在哪里不同/出了问题?注意:我不会将我的属性命名为与类相同的名称。如果您指定了错误,我可以判断出哪里出了问题。我更新了它,它仍然是相同的代码,告诉我它在哪里不同/出了问题?注意:我不会将我的属性命名为与类相同的名称。