1

可能是一个我无法解决的非常简单的问题 - 我从 C# 开始,需要使用 getter/setter 方法向数组添加值,例如:

public partial class Form1 : Form
{
    string[] array = new string[] { "just","putting","something","inside","the","array"};


    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Array = "gdgd";
    }

    public string[] Array
    {
        get { return array; }
        set { array = value; }
    }
}

}

4

3 回答 3

10

这永远不会起作用:

Array = "gdgd";

那是试图为属性分配一个string值。string[]请注意,无论如何您都不能在数组中添加或删除元素,因为一旦创建了它们,其大小就是固定的。也许你应该使用 aList<string>代替:

public partial class Form1 : Form
{
    List<string> list = new List<string> { 
        "just", "putting", "something", "inside", "the", "list"
    };    

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        List.Add("gdgd");
    }

    public List<string> List
    {
        get { return list; }
        set { list = value; }
    }
}

请注意,无论如何,拥有 public 属性在这里是无关紧要的,因为您是从同一个类中访问它 - 您可以只使用该字段:

private void button1_Click(object sender, EventArgs e)
{
    list.Add("gdgd");
}

另请注意,对于像这样的“琐碎”属性,您可以使用自动实现的属性:

public partial class Form1 : Form
{
    public List<string> List { get; set; }

    public Form1()
    {
        InitializeComponent();
        List = new List<string> { 
            "just", "putting", "something", "inside", "the", "list"
        };    
    }

    private void button1_Click(object sender, EventArgs e)
    {
        List.Add("gdgd");
    }
}
于 2013-08-12T14:50:06.690 回答
1

在您的 set 方法中,您需要添加代码,以便它可以添加到特定的数组位置,除非您向它发送一个数组,如果是这种情况,那么您应该工作。

如果您向它发送一个字符串,就像您一样,您需要指定数组位置。

Array[index] = "gdgd"

否则看起来你正在分配一个字符串变量而不是一个数组

于 2013-08-12T14:50:41.120 回答
0

使用列表来保存值。当需要返回数组时,使用 List.ToArray()

于 2013-08-12T14:50:55.043 回答