将列表属性传递给另一个类

时间:2014-02-28 15:28:07

标签: c#

我有一个列表,我试图从一个类传递到另一个类。这是代码:

namespace Test
{
    Class1
    {
            public IList<string> MyList { get; set; }
            internal Class1()
            {
                            MyList = new List<string>();
            }
            public void AddValues()
            {
                            MyList.Add("123");
            }             
    }
}


Class2
{             
        Class1 c = new Class1();
        var a = c.MyList;
}

每次我运行这个我在Class2中为MYList获得0值。我做错了什么?

我的想法是,当从Class2调用它时,它将再次进入构造函数并再次初始化MyList。但我无法在方法AddValues中初始化MyList,因为它从另一个类被多次调用。所以我很困惑,我怎么能这样做。在谷歌搜索但没有找到任何答案。

3 个答案:

答案 0 :(得分:3)

你刚刚做了:

Class1 c = new Class1();
var a = c.MyList;

并且您没有调用AddValues方法,因此您的列表仍为空。

尝试:

Class1 c = new Class1();
c.AddValues(); // call method to add in list
var a = c.MyList;

shouldn't be exposing List<T> as property,您可能也会看到此thread

答案 1 :(得分:0)

在调用Mylist之前需要调用AddValues(),因为在创建对象时没有初始化列表

答案 2 :(得分:0)

基于你对Habib答案的赞扬,你正在描述另一个问题。如果您不想再次调用AddValues - 方法,则表示您遇到架构问题。也许考虑扭转秩序。而不是打电话

Class2
{             
    Class1 c = new Class1();
    var a = c.MyList;
}

您可能希望将Class1的特定实例注入Class2的实例中:

public class Class2
{
    private Class1 _dependency;       

    public Class2(Class1 dependency)
    {
         _dependency = dependency;
    }

    public void Whatever()
    {
         _dependency.MyList;
    }
}