无法将项目添加到列表属性

时间:2014-07-31 06:53:37

标签: c# list properties visual-studio-2013

class Program
    {
        static void Main(string[] args)
        {
                ListDemo _list = new ListDemo();
                _list.Str.Add("string1");
                _list.Str.Add("string2");
                _list.Str.Add("string3");
                foreach (string item in _list.Str)
                {
                Console.WriteLine(item);
                }
                Console.ReadKey();
        }
    }
class ListDemo
{
    string[] _str = new string[3];
    public List<string> Str
    {
        get
        {
            return _str.ToList();
        }
        set
        {
            _str = value.ToArray();
        }
    }
}

我想在列表中添加一个新项目。上面我提供了示例代码,但我无法在列表中添加项目。

请帮助我解决问题。

谢谢, Phani。

3 个答案:

答案 0 :(得分:0)

_str.ToList()返回List类型的新对象。但是这个对象与_str不对应,只包含相同的数据。我建议对_str使用List而不是string [],认为你的属性已经有性能泄漏。然后你的财产将正常工作

答案 1 :(得分:0)

如果要保留当前的ListDemo类

class Program
{
    static void Main(string[] args)
    {
        ListDemo _list = new ListDemo();               //Declare an instance of the ListDemo class.

        List<string> newStrList = new List<string>();  //Declare a new List<string>.
        newStrList.Add("string1");                     //Add strings like this.
        newStrList.Add("string2");
        newStrList.Add("string3");

        _list.Str = newStrList;                        //Add the entire collection to the ListDemo at once, like this.

        foreach (string item in _list.Str)
        {
            Console.WriteLine(item);
        }
        Console.ReadKey();
    }
}
class ListDemo
{
    string[] _str = new string[3];
    public List<string> Str
    {
        get
        {
            return _str.ToList();
        }
        set
        {
            _str = value.ToArray();
        }
    }
}

否则,只需使用:

class Program
{
    static void Main(string[] args)
    {
         List<string> _list = new List<string>(); //Declare an empty list like this.
        _list.Add("string1");                     //Add a string to it like this.
        _list.Add("string2");
        string valueOfString3 = "string3";
        _list.Add(valueOfString3);                //Or like this.

        foreach (string item in _list)
        {
            Console.WriteLine(item);
        }
        Console.ReadKey();
    }
}

如果你想把它作为数组,你可以说:

string[] arrayOfList = _list.toArray();

答案 2 :(得分:0)

试试这个。

class Program
{
    static void Main(string[] args)
    {
         ListDemo _list = new ListDemo();

        List<String> Str=new List<String>();
        Str.Add("string1");
        Str.Add("string2");
        Str.Add("string3");

        _list.Str=Str;

        foreach (string item in _list.Str)
        {
            Console.WriteLine(item);
        }
        Console.ReadKey();
    }
}
class ListDemo
{
    string[] _str = new string[3];
    public List<string> Str
    {
        get
        {
            return _str.ToList();
        }
        set
        {
            _str = value.ToArray();
        }
    }
}