C# winform Tag 中存储的自定义对象是值传递而不是引用吗
在c#winform开发中,我在成员变量里声明了一个List<User>list=newList<User>()其中User为自定义类,里面假设只有一个name的字符串属...
在c# winform开发中,我在成员变量里声明了一个List<User> list = new List<User>() 其中User为自定义类,里面假设只有一个 name 的字符串属性。现在我动态生成若干个Button控件,语句大致如下: User user = new User(); user.Name = "oldData"; this.list.Add(user); Button button = new Button(); button.Tag = user; 现在问题出现了,当我在之后的代码里令
User user = (User) button.Tag; user.Name = "newData"; 请问现在在list中对应的User对象,譬如list[0].Name 有没有被更改为 "newData" 呢,
即 button.Tag 是存放了对User对象的一个引用(引用传递),还是说是存放了一个新的User对象,而与在list中对应的User对象不同,仅仅是一份拷贝,修改其值并不能影响list里存放的对象的值 (即 作了一份拷贝)? 展开
User user = (User) button.Tag; user.Name = "newData"; 请问现在在list中对应的User对象,譬如list[0].Name 有没有被更改为 "newData" 呢,
即 button.Tag 是存放了对User对象的一个引用(引用传递),还是说是存放了一个新的User对象,而与在list中对应的User对象不同,仅仅是一份拷贝,修改其值并不能影响list里存放的对象的值 (即 作了一份拷贝)? 展开
4个回答
展开全部
你的例子中的会被修改的。除非你的tag中赋值了一个struct,那么会得到一个拷贝。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
会修改,Tag是保存引用。不是拷贝。
追问
您确定吗?
追答
确定
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
确定你的User是class不是struct
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询