我有以下代码,我创建了一个对象,并通过一系列窗体将其传递给用户控件。
public class MyObject
{
public List<AnObject> Objects {get; set;}
}表格1:
private void MyObject _myObject = new MyObject{Objects = new List<AnObject>()};
...
Form2 form2 = new Form2(ref _myObject);
form2.Show();表格2:
public Form2(ref MyObject myObject)
{
UserControl1 myControl = new UserControl1();
myControl.Objects = myObjects.Objects
}UserControl1
public List<AnObject> Objects {get; set;}
...
Objects.Add(new myObject());当我向UserControl1中的对象添加一个新的myObject()时,它不会更新我在Form1上的原始列表。我正在通过引用传递myObject。当我将Form2的AnObject列表赋给UserControl1时,我唯一能想到的就是以某种方式拆开我的值。我做错了什么?
发布于 2010-12-02 05:04:07
无论如何,.NET中的对象都是引用类型。在这种情况下,只有当您希望在同一参数中传回不同的对象而不是返回新对象时,才需要使用ref。对于您在这里所做的事情,ref是完全不必要的。(与之形成对比的是,struct是值类型,因此ref做了一些更有可能有用的事情)类似地,由于对象已经是值类型,所以这里没有装箱或取消装箱的概念。
https://stackoverflow.com/questions/4329073
复制相似问题