2016-02-09 25 views
-1
class Program 
{ 
    int[] arrayOne = new int[3]; 
    int[] arrayTwo = new int[5]; 
    int[] arrayThree = new int[7]; 
    int sumOne = 0; 
    int sumTwo = 0; 
    int sumThree = 0; 

    static void Main() 
    { 

     //call method to generate numbers 
     generateRandomNumbers(); 

     //call method to get sums of arrays 
     sumOne = getSum(arrayOne); 
     sumTwo = getSum(arrayTwo); 
     sumThree = getSum(arrayThree); 

     //call method to show numbers in each array and their sum 
     showNumbers(arrayOne); 
     showNumbers(arrayTwo); 
     showNumbers(arrayThree); 

     ReadKey(); 
    } 

    private static void generateRandomNumbers() 
    { 
     Random random = new Random(); 
     //load in values for arrayOne 
     for (int i = 0; i < arrayOne.Length; i++) 
      arrayOne[i] = random.Next(1, 99); 

     //arrayTwo 
     for (int j = 0; j < arrayTwo.Length; j++) 
      arrayTwo[j] = random.Next(1, 99); 

     //arrayThree 
     for (int k = 0; k < arrayThree.Length; k++) 
      arrayThree[k] = random.Next(1, 99); 
    } 

    private static int getSum(int[] array) 
    { 
     int total = 0; 

     for (int x = 0; x < array.Length; x++) 
      total += array[x]; 

     return total; 
    } 

    private static void showNumbers(int[] array) 
    { 
     for (int m = 0; m < array.Length; m++) 
      Write("{0, 5}", array[m]); 

     switch (array.Length) 
     { 
      case 3: 
       Write(" = {0}", sumOne); 
       break; 
      case 5: 
       Write(" = {0}", sumTwo); 
       break; 
      case 7: 
       Write(" = {0}", sumThree); 
       break; 
     } 
     WriteLine(); 

    } 
} 

基本上,發生錯誤處處,我使用arrayOne,arrayTwo,arrayThree,和sumOne,sumTwo,sumThree。從Main和generateRandomNumbers方法中刪除'static'會刪除所有的錯誤,但是當然如果沒有靜態的Main方法,它就無法編譯。C#CS0120 「的對象引用是所必需的非靜態字段,方法或屬性」

在我的C#當然,我們正在學習的時刻,這一計劃的目標的方法和陣列是將隨機數成三排,然後顯示每個數字和數組的總和。

我已搜查和周圍的答案大多是沿着「創建實例」行去,但我不知道如何去這樣做。任何幫助將非常感激!

+0

旁註請查看[MCVE]爲指導創造更好的代碼示例。 –

+0

您的'generateRandomNumbers'是屬於「Class」的靜態函數,而您的arrayOne是屬於「Instance」的字段。 'public class Program {}'是一個類。 'var p = new Program()'是類「Program」的一個實例。 這就像約翰是人的一個實例的「人」和「約翰」。 在你的情況下,最簡單的方法就是讓arrayOne ...等靜態爲好。 – BernieDADA

+0

@Bjørn-RogerKringsjå我不知道。這對於[META]來說是一個很好的問題。如果你想問一下,確保在那裏搜索現有的帖子來澄清你的觀點。 –

回答

3

當您將所有內容填入Program時,將Main設置爲靜態,因此將所有內容都設爲靜態通常是最容易的。所以,一個選擇是讓你的田靜:

static int[] arrayOne = new int[3]; 
static int[] arrayTwo = new int[5]; 
static int[] arrayThree = new int[7]; 
static int sumOne = 0; 
static int sumTwo = 0; 
static int sumThree = 0; 

另一種選擇是使一切非靜態使用以下語法創建實例Program

var program = new Program(); 

然後引用屬性和方法實例的

//call method to generate numbers 
    program.generateRandomNumbers(); 

    //call method to get sums of arrays 
    program.sumOne = program.getSum(arrayOne); 
    program.sumTwo = program.getSum(arrayTwo); 
    program.sumThree = program.getSum(arrayThree); 

正如你所看到的,藏在心裏靜態比較容易,除非你需要有是爲每個實例不同的屬性。

+0

非常感謝! – minusLeft

相關問題