В C# есть ли способ использовать свойства с массивами? - PullRequest
0 голосов
/ 13 апреля 2020

Как я понимаю, свойства C# - это методы, которые имеют методы доступа get и set.

class MyClass  
{  
    private int x;  
    public int X  
    {  
        get  
        {  
            return x;  
        }  
        set  
        {  
            x = value;  
        }  
    }  
}  

Я могу вызвать свойство класса в скрипте (и его accessors) с

MyClass mc = new MyClass();
mc.X = 10;
Debug.Log(mc.X); //returns 10

Однако, насколько мне известно, я могу передать только одно значение свойству.
Есть ли способ передачи массивов? Что-то вроде

MyClass mc = new MyClass();
mc.X = new int[] { 1, 2 }; //throws an error
Debug.Log(mc.X[0]); //I'd like it to return 1

Это, конечно, выдает ошибку. Интересно, возможно ли это сделать другим способом?

Ответы [ 2 ]

4 голосов
/ 13 апреля 2020

Решение простое - используйте int[] вместо int

class MyClass
{
    private int[] x;
    public int[] X
    {
        get
        {
            return x;
        }
        set
        {
            x = value;
        }
    }
}

Также вы можете рассмотреть возможность использования свойства auto вместо этого просто так:

class MyClass
{
    public int[] X { get; set; }
}

Вы также можете хочу взглянуть на списки и прочитать некоторые основы;)

3 голосов
/ 13 апреля 2020

Конечно, просто сделайте свойство также массивом или списком:

class MyClass  
{  
    // in general a list should never be null, but could be empty, or without values.
    // thats why we initialize the field here
    private List<int> x = new List<int>();  

    public List<int> X  
    {  
        get  
        {  
            return x;  
        }  
        set  
        {  
            x = value;  
        }  
    }  
}  

, тогда вы можете сделать:


var obj = new MyClass();
obj.X.Add(3);
obj.X.Add(6);

// (or use AddRange() to add another list or array of values

// Then loop the list and output values:

foreach(int x in obj.X)
{
   Console.WriteLine(x);
}

Вот точка-точка для приведенного выше кода: https://dotnetfiddle.net/T2FrQ0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...