2015-10-06 2 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; 
    } 

цв имеет тип Список < Point> и Точка класс по моим собственным, который обеспечивает два свойства (х и у) и конструктор точки (х, у).

Я хочу теперь сумму всех x, соответственно сумму всех y.

Я ищу более обобщенной сумма функции, которая может быть, использует делегатов или лямбда выражения. У меня нет идеи, как это сделать с умным способом C#.

Заранее спасибо

+2

Отъезд [ 'Enumerable.Sum'] (https://msdn.microsoft.com/en-us /library/system.linq.enumerable.sum(v=vs.110).aspx) – juharr

ответ

5

Конечно, использовать метод Sum расширения с Linq:

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

Ну, на данный момент выполнение функции для этого не имеет большого значения. – Steve

+2

@Steve, кроме сокращения вызова и сохранения звонящего от написания лямбды, но да, это не огромный выигрыш. Также потребуется, если 'x' или' y' являются закрытыми. –

+0

Я просто предлагаю, что это может вообще устранить необходимость конкретного метода и, вероятно, дает лучший ключ к тому, что происходит. Но я отвлекаюсь. Ваш ответ абсолютно правильный. – Steve