将项添加到现有集合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是的……很简单,哈哈……有时我想得很辛苦……非常感谢。请看一下已经发布的答案,这可能是一个更好的解决方案。