我有一个列表,我试图从一个类传递到另一个类。这是代码:
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,因为它从另一个类被多次调用。所以我很困惑,我怎么能这样做。在谷歌搜索但没有找到任何答案。
答案 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;
答案 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;
}
}