当我需要数组在C#中有一个间隔时,如何处理数组属性?

时间:2019-04-19 16:03:20

标签: c# arrays properties setter getter

对于C#来说,我是一个非常陌生的人,但仍在努力围绕它的一些核心概念。第一次向StackOverflow发布问题。

这就是我需要帮助的地方

  

为以下属性设置属性:私有字符串数组; : 以便:   “数组的每个元素都必须> = 0和<= 10”

我应该一直运行它,然后为每个元素或其他内容设置array = value吗?

这就是我所做的:

private string array;
 public int[] Array
        {
            get { return array; } //-is this part good for the task?
            set
            {
                //what do I do here to make sure the elements are withing the 
                //given interval?

            }
        }

2 个答案:

答案 0 :(得分:1)

看看这是否是您需要的(Demo):

public class myClass
{
    private int[] _Array = new int[10];

    public int this[int index]
    {
        get { return _Array[index]; }
        set
        {
            if (value >= 0 && value <= 10)
                _Array[index] = value;
        }
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        myClass m = new myClass();
        m[0] = 1;
        m[1] = 12;
        Console.WriteLine(m[0]); // outputs 1
        Console.WriteLine(m[1]); // outputs default value 0
    }
}

答案 1 :(得分:0)

您正在寻找类似的东西

private int[] _privateArray;
public int[] PublicArray
{
    get
    {
        return _privateArray;
    }
    set
    {
        foreach (int val in value)
        {
            if (val < 0 || val > 10) throw new ArgumentOutOfRangeException();
        }
        // if you get to here you can set value
        _privateArray = (int[])value.Clone();
    }
}

请注意,私有财产和公共财产必须为同一类型