Как получить доступ к переменной в конструкторе из метода в C # - PullRequest
0 голосов
/ 16 сентября 2018

Я бы хотел получить доступ к переменной (массиву), объявленной внутри конструктора из метода.Как бы я этого достиг?В приведенном ниже примере я хотел бы использовать переменную 'a'.

public example(int x)    
{  
    int[] a = new int[x];
}  

public void method()  
{
    for (int i = 0; i < a.Length; ++i)
    {
        // the usage of `a`
    }
}

Ответы [ 3 ]

0 голосов
/ 16 сентября 2018

Метод для достижения - объявить его как свойство этого класса.В конструкторе вы должны инициализировать приватные свойства.Таким образом, код будет выглядеть так:

    private int[] _a {get; set;}
    public example(int x)
    {
        int[] a = new int[x];
        _a = a;
    }

    public void method()
    {
        for (int i = 0; i < a; ++i)
0 голосов
/ 27 сентября 2018

В вашем коде область видимости переменной 'a' доступна только до конца конструктора, как вы объявили его внутри конструктора. Если вы хотите использовать переменную 'a' вне конструктора, вы должны объявить ее вне конструктора, но в рамках класса.

class example
{
   private int[] a;
   public example(int x)    
   {  
      a = new int[x];
   }  

   public void method()  
   {
      for (int i = 0; i < a.Length; ++i)
      {
         // the usage of `a`
      }
   }
}

Предлагается объявить эту переменную как закрытый член, чтобы ее нельзя было напрямую назначить за пределы класса.

0 голосов
/ 16 сентября 2018

Я бы создал личное поле для a, например:

private readonly int[] _a;

public Example(int x)
{
   _a = new int[x];
}


public void method()
{
   for(int i = 0; i < _a.Length; ++i)
   // Rest of your code
}

обратите внимание, что если вы хотите изменить _a после его создания, вы должны удалить readonly.

...