将项添加到现有集合C#
我收集了:将项添加到现有集合C#,c#,collections,C#,Collections,我收集了: public class Test { public double Index { set; get; } public double A { set; get; } public double B { set; get; } public double C { set; get; } } List<Test> test = new List<Test>(); 公
public class Test
{
public double Index { set; get; }
public double A { set; get; }
public double B { set; get; }
public double C { set; get; }
}
List<Test> test = new List<Test>();
公共类测试
{
公共双索引{set;get;}
公共双A{set;get;}
公共双B{set;get;}
公共双C{set;get;}
}
列表测试=新列表();
我用一些随机数填充了A和B。之后,我想在集合中添加项目C。例如,我正在尝试:
foreach (Test t in test)
{
c = t.A + t.B;
test.Add(new Test {C = c }); <------
}
foreach(测试中的测试t)
{
c=t.A+t.B;
test.Add(newtest{C=C});如果希望C
是A
和B
的总和,最好使用计算字段:
public class Test
{
public double Index { set; get; }
public double A { set; get; }
public double B { set; get; }
public double C
{
get
{
return A + B;
}
}
}
所以
上述方法的优点是,C
始终是其他值的总和,您无需每次都重新计算。因此,如果我采用上述方法并执行以下操作:
test.B = 3; //instead of the original 2
然后C
保持同步:
test.C == 3; //false
test.C == 4; //now true
使用原始方法(或其他答案)执行此操作意味着重新循环结果集
或者在C#6.0中,您可以使用
如果希望C
是A
和B
的总和,最好使用计算字段:
public class Test
{
public double Index { set; get; }
public double A { set; get; }
public double B { set; get; }
public double C
{
get
{
return A + B;
}
}
}
所以
上述方法的优点是,C
始终是其他值的总和,您无需每次都重新计算。因此,如果我采用上述方法并执行以下操作:
test.B = 3; //instead of the original 2
然后C
保持同步:
test.C == 3; //false
test.C == 4; //now true
使用原始方法(或其他答案)执行此操作意味着重新循环结果集
或者在C#6.0中,您可以使用
只需将属性设置为方程
只需将属性设置为等式集合的“items”已经有了一个C
属性,因此似乎您要做的是:foreach(Test中的Test t){t.C=t.a+t.B;}
,您能验证这是否是您想要的吗?一个位置只能有一个元素。您可以插入(index,item)相反,OD增加,只是说(因为我真的没有得到你正在尝试做的事情,所以它可能是一件值得考虑的事情)…<代码>公共双c{get {返回a+b;}}
@LasseV.Karlsen是的……很简单,哈哈……有时我想得很辛苦……非常感谢。请看一看已经发布的答案,可能这是一个更好的解决方案。“项目”集合的一部分已经有了一个C
属性,因此看起来您想要做的是:foreach(Test中的Test t){t.C=t.a+t.B;}
,您能验证这是否是您想要的吗?一个位置只能有一个元素。您可以插入(index,item),而不是添加od。只是说(因为我真的没有得到你想要做的事情,所以它可能是你要考虑的事情)…<代码>公共双c{get {返回a+b;}}@LasseV.Karlsen是的……很简单,哈哈……有时我想得很辛苦……非常感谢。请看一下已经发布的答案,这可能是一个更好的解决方案。