2014-02-11 25 views
0

我可以用下面的方式动态更新列表,例如总量= firstamount + secondamount ?.如果没有,那么做到这一点最理想的方法是什么?在对象初始值设定项列表中执行算术运算c#

List<Test> test = new List<Test> 
{ 
    new Test 
    { 
     Name ="ABC", 
     FirstAmount = 10, 
     SecondAmount = 20, 
     TotalAmount = FirstAmount + SecondAmount                         
    } 
};  

public class Test 
{ 
    public String Name { get; set; } 

    public decimal FirstAmount { get; set; } 

    public decimal SecondAmount { get; set; } 

    public decimal TotalAmount { get; set; } 
} 

回答

2

如果你的总数将总是其他两个的总和,你可以这样做:

List<Test> test = new List<Test> 
{ 
    new Test { Name ="ABC",FirstAmount =10,SecondAmount =20} 
}; 

public class Test 
{ 
    public String Name {set;get;} 

    public decimal FirstAmount {set;get;} 

    public decimal SecondAmount {set;get;} 

    public decimal TotalAmount { get { return FirstAmount + SecondAmount; } } 
} 
+0

我如何得到“total金额价值“列入清单说,如果我想将列表绑定到网格。我如何访问类中的对象? – Yoda

+0

只需使用'TotalAmount'属性。你希望该字段是可编辑的吗? – ivowiblo

+0

假设我有一个List列表对象的集合,如列表 test = new列表 { {Test = {ABC},FirstAmount = 10,SecondAmount = 20} New Test {Name =“XYZ”,FirstAmount = 20, SecondAmount = 30} };在这种情况下,我该如何调用财产,因为这将被绑定到网格 – Yoda

0

不,您不能访问被初始化的对象的属性,除了设置它们。

在这种情况下,最简单的解决方法是使用中间变量:

int firstAmount = 10; 
int secondAmount = 20; 

List<Test> test = new List<Test> 
{ 
    new Test { Name ="ABC",FirstAmount = firstAmount,SecondAmount = secondAmount ,TotalAmount = firstAmount + secondAmount} 
}; 
+0

我知道这个解决方法,但我很好奇,如果我们能以上述方式做 – Yoda

4

您可以更改对象使其在TotalAmount吸气...像

List<Test> test = new List<Test> 
{ 
    new Test { Name ="ABC",FirstAmount =10,SecondAmount =20} 
}; 

public class Test 
{ 
    public String Name {set;get;} 

    public decimal FirstAmount {set;get;} 

    public decimal SecondAmount {set;get;} 

    public decimal TotalAmount {get {return FirstAmount + SecondAmount;}} 
} 
+0

@Magus完成 - 我从OP的贴子复制代码并重新粘贴它香草:) – Jay

0

A反璞归真的方法是使用一个构造函数:

List<Test> test = new List<Test> 
{ 
    new Test(
     name: "ABC", 
     firstAmount: 10, 
     secondAmount: 20                        
    ) 
};  

public class Test 
{ 
    public Test(string name, decimal firstAmount, decimal secondAmount) 
    { 
     Name = name; 
     FirstAmount = firstAmount; 
     SecondAmount = secondAmount; 
     TotalAmount = firstAmount + secondAmount; 
    } 

    public String Name { get; set; } 

    public decimal FirstAmount { get; set; } 

    public decimal SecondAmount { get; set; } 

    public decimal TotalAmount { get; set; } 
} 

白衣这种方法,您TotalAmount属性保持编辑。

+0

如何将“TotalAmount”值返回到列表中以将其绑定到网格? – Yoda

+0

您可以发布您用于标识不起作用的网格的代码吗?我不理解你的问题 – ivowiblo