Dictionary的add添加键值时是复制还是和原来的变量有关联?

forever_maitian 2023-05-24 10:35:14
​
Dictionary<string, PluginsInfo> dic = new Dictionary<string, PluginsInfo>();
             PluginsInfo pluginsInfo = new PluginsInfo();
             pluginsInfo.Name = "2222";
             dic.Add("2", pluginsInfo);
             MessageBox.Show("对象本身:"+ReferenceEquals(pluginsInfo, dic["2"]).ToString());
             MessageBox.Show("对象的参数:" + ReferenceEquals(pluginsInfo.Name, dic["2"].Name).ToString());

​

 得到的结果是:true true

​
 Dictionary<string, DataCell> dic = new Dictionary<string, DataCell>();
            DataCell data=new DataCell();
            data.DataValue = "www";
            dic.Add("2", data);
            MessageBox.Show("对象本身:" + ReferenceEquals(data, dic["2"]).ToString());
            MessageBox.Show("对象的参数:" + ReferenceEquals(data.DataValue, dic["2"].DataValue).ToString());

​

得到的结果是:false true

对于这两种结果想不清楚为什么,两者只是value的类型不同。

...全文
462 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-05-24
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/7950501, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
forever_maitian 2023-05-24
  • 打赏
  • 举报
回复

找到原因了,因为两个value一个是值类型一个是引用类型

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧