2016-10-16 181 views
0

我定義的數組和功能,但我無法調用函數,我應該用類名調用函數或對象如何調用靜態方法的類

public static string PrintArray (int [,] arr) 
    { 
     string output = ""; 
     for (int i = 0; i<arr.GetLength(0);i++) 
     { 
      for (int j = 0; j < arr.GetLength(1); j++) 
       output += arr[i,j]; 
      output = output.Substring(0, output.Length)+"/n"; 
     } 
     return output; 
    } 
    public static void Fill(int[,] arr,int min, int max) 
    { 
     Random r = new Random(); 
     for (int i = 0; i < arr.GetLength(0); i++) 
     { 
      arr[i] = r.Next(min, max); 
      for (int j = 0; j < arr.GetLength(1); j++) 
      { 
       arr[i,j] = r.Next(min, max); 
      } 

     } 
    } 
+0

這些都是'static'方法,所以從類是最好的。 – Enigmativity

+0

與您的問題無關的註釋:您可以將此代碼縮短爲'output = output.Substring(0,output.Length)+「/ n」;'into'output = ouput +「/ n」;',even更短'輸出+ =「/ n」;' – kurakura88

回答

2

如果你有static方法,他們必須使用類名來調用。如果它是一個instance(非靜態)方法,則只能從對象中調用,不能從對象的實例調用static方法,或者從靜態類名稱調用instance方法。

就你而言,由於你已經定義了static方法,你必須以靜態方式引用它們。例如,如果你的類被稱爲ArrayHelper

public class ArrayHelper 
{ 
    public static string PrintArray (int [,] arr) 
    { 
     string output = ""; 
     for (int i = 0; i<arr.GetLength(0);i++) 
     { 
      for (int j = 0; j < arr.GetLength(1); j++) 
       output += arr[i,j]; 
      output = output.Substring(0, output.Length)+"/n"; 
     } 
     return output; 
    } 

    public static void Fill(int[,] arr,int min, int max) 
    { 
     Random r = new Random(); 
     for (int i = 0; i < arr.GetLength(0); i++) 
     { 
      arr[i] = r.Next(min, max); 
      for (int j = 0; j < arr.GetLength(1); j++) 
      { 
       arr[i,j] = r.Next(min, max); 
      } 
     } 
    } 
} 

你可以使用它像這樣

var array = ... 
ArrayHelper.Fill(array, 10, 20);