2015-10-06 41 views
0

我是C#的新手,正在尋找一種智能的方法來減少代碼中的冗餘。廣義求和函數

public double sumx() 
    { 
     double temp = 0; 
     foreach (var item in col) 
     { 
      temp= temp + item.x; 
     } 
     return temp; 
    } 
    public double sumy() 
    { 
     double temp = 0; 
     foreach (var item in col) 
     { 
      temp = temp + item.y; 
     } 
     return temp; 
    } 

COL是類型的列表<點>是由我自己的,它提供了兩個屬性(x和y)和構造點(X,Y的一類)

我現在想要所有x的總和,分別是所有y的總和。

我正在尋找一個更廣義的總和功能,這可能使用代表拉姆達表達式。我不知道如何以聰明的C#方式做到這一點。

預先感謝

+2

退房['Enumerable.Sum'](https://msdn.microsoft.com/en-us /library/system.linq.enumerable.sum(v=vs.110).aspx) – juharr

回答

5

當然,從LINQ的使用Sum擴展方法:

public double sumx() 
{ 
    return col.Sum(item => item.x); 
} 
public double sumy() 
{ 
    return col.Sum(item => item.y); 
} 
+2

那麼,在這一點上做一個函數沒有什麼價值。 – Steve

+2

@Steve除了縮短呼叫時間並保存呼叫者寫入lambda以外,但是,這不是一個巨大的收益。如果'x'或'y'是私有的,也將需要。 –

+0

我只是建議這可以刪除所有需要的特定方法,並且可能會給出更好的線索。但我在離題。你的回答是絕對正確的。 – Steve