2017-03-02 31 views
0

C#初學者。我很熟悉Python,並在Python,(我認爲),你會做這樣的事情:查找列表中所有偶數的和的靜態方法

myList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

def SumOfEvens(myList): 

    #Initialize the results variable. 
    result = 0 

    #Loop through each element of the list. 
    for i in myList: 

    #Test for even numbers. 
     if not i % 2: 
     result += i 

return(result) 

print SumOfEvens(myList) 
30 

我想在C#中重新創建,但我需要寫一個靜態方法,然後調用內Main

名單上該方法到目前爲止,這是我:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Strings 
{ 
class Program 
    { 
     static void SumofEvens(string[] args) 
     { 
     //initialize results variable 
     int result = 0 

     //check if the number is even. If it's even, add it. 
     foreach (int i in l) 
      if (i % 2 == 0) 
      { 
       int result += i 
      } 

     } 
     static void Main(string[] args) 
     { 
      l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
      return SumofEvens(l); 
     } 
    } 
} 

首先,我不知道如何正確地創建內主列表l。是這樣做的正確方法嗎?

int[] l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

然後,我需要的Main結果寫入控制檯。那是

Console.WriteLine(Main); 
Console.ReadLine(); 

它會在我的代碼的最底部?目前只是告訴控制檯說「輸入一個整數」。謝謝你的幫助。

+0

退房馬克西姆Simkin的答案。 它優雅,可讀和精確。 –

+0

@OriNachum這很準確,但它不回答我的許多問題+它不提供任何解釋。在變量之前鍵入'var'以聲明變量....在{}之前鍵入''以將項目聲明爲整數....爲什麼他要做這些事情而不是arias_JC和nabil london所做的事情,數組是這樣創建的:'int [] l = {1,2,3,4,5,6,7,8,9,10};'?另外,他不回答我應該在哪裏寫控制檯的問題。 – HappyHands31

+1

他使用linq,我推薦學習和使用它。它允許你在一個動作中對可枚舉對象做很多事情。只要在編譯時清楚該變量是什麼,就可以將'var'替換爲作用域中的* any *變量(不是類變量)。第一行定義數組,並準備他在那裏寫入的值。第二行實際上是兩個動作:1.「只採用與括號內的規則匹配並放入臨時數組的數據」; 2.「總結新的臨時陣列」。 –

回答

2

創建陣列可以這樣做:

int[] l = {1,2,3,4,5,6,7,8,9,10}; 

另外,如果你的範圍內創建一個數組:

int[] l = Enumerable.Range(1, 10).ToArray(); 

您將需要包括System.linq的上方。寫控制檯將

Console.WriteLine(result); 

但既然你把它定義爲無效,你就不會在主返回一個值,你就打電話給你的方法,要麼打印結果在靜態方法或通過返回的打印結果在主結果:

static int SumofEvens(string[] args) 
{ 
    ... 
    // either print in method, the above return would be void 
    Console.WriteLine(result); 
    // or return result, the above return would be int as shown 
    return result; 
} 

// if SumofEvens returns int, in main ... 
Console.WriteLine(SumofEvens()); 
3
var l =new List<int> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
var result = l.Where(i=>i%2==0).Sum(); 
+0

作爲一名C#程序員,與原始問題中的Python相比,我感覺非常好閱讀您的答案。 – Emad

1

這裏是你如何做到這一點:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Strings 
{ 
    class Program 
    { 
     // method SumOfEvens take an int array and returns an int 
     static int SumOfEvens(int[] integers) 
     { 
      //initialize results variable 
      int result = 0 

      //check if the number is even. If it's even, add it. 
      foreach (int i in integers) 
       if (i % 2 == 0) 
       { 
        int result += i 
       } 
      // You should return the result 
      return result; 
     } 

     static void Main(string[] args) 
     { 
      // that's how you create an array of integers in c# 
      int[] integers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 

      // store the sum in a variable 
      int result = SumOfEvens(integers); 

      // write result to the console 
      Console.WriteLine("The sum of even integers is: "+ result); 

      // never return something in the Main method 
      // because it returns void (nothing) 
     } 
    } 
} 
相關問題