2016-10-16 4 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 ";' в 'output = ouput +"/n ";', even более короткий 'output + ="/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); 
Смежные вопросы