首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于本例中的引用类型,我遗漏了什么?

关于本例中的引用类型,我遗漏了什么?
EN

Stack Overflow用户
提问于 2010-12-02 04:58:37
回答 3查看 106关注 0票数 0

我有以下代码,我创建了一个对象,并通过一系列窗体将其传递给用户控件。

代码语言:javascript
复制
public class MyObject
{
   public List<AnObject> Objects {get; set;}
}

表格1:

代码语言:javascript
复制
private void MyObject _myObject = new MyObject{Objects = new List<AnObject>()};

...

Form2 form2 = new Form2(ref _myObject);
form2.Show();

表格2:

代码语言:javascript
复制
public Form2(ref MyObject myObject)
{
    UserControl1 myControl = new UserControl1();
    myControl.Objects = myObjects.Objects
}

UserControl1

代码语言:javascript
复制
public List<AnObject> Objects {get; set;}
...

Objects.Add(new myObject());

当我向UserControl1中的对象添加一个新的myObject()时,它不会更新我在Form1上的原始列表。我正在通过引用传递myObject。当我将Form2的AnObject列表赋给UserControl1时,我唯一能想到的就是以某种方式拆开我的值。我做错了什么?

EN

Stack Overflow用户

发布于 2010-12-02 05:04:07

无论如何,.NET中的对象都是引用类型。在这种情况下,只有当您希望在同一参数中传回不同的对象而不是返回新对象时,才需要使用ref。对于您在这里所做的事情,ref是完全不必要的。(与之形成对比的是,struct是值类型,因此ref做了一些更有可能有用的事情)类似地,由于对象已经是值类型,所以这里没有装箱或取消装箱的概念。

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4329073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档