C#由Dictionary赋值引发的对引用类型使用的思考

简介: C#由Dictionary赋值引发的对引用类型使用的思考

最近,项目中用到dictionary<string,object>格式来处理数据,当前有一个字典resultData,用来返回页面的所有值,后续对这个字典进行了增加操作,如图:

 

并最终返回页面。

由于我在另外一个页面需要用到第一步获取到的resultData值,因此,我进行了如下操作

Dictionary<string,object> temp=resultData;

但是当我进行操作时,temp的值为包含全部数据的resultData(也就是返回页面的数据)

 

解析:

  分析知道Dictionary属于引用类型,引用类型在赋值时,如果直接赋值,则是将对象的地址进行了赋值,而非值,因此我们需要用如下方法进行赋值操作。

Dictionary<string,object> dicItems=new Dictionary<string,object>(resultData);

此时,我们将先将resultData的值赋值给dicItems,无论后续在对resultData 进行何种操作,都将不会影像dicItems的值。

因此我们需要注意:

引用类型直接赋值的话,得到的是对原对象指向的地址,而并非原对象的值,此时,不论对原对象还是新对象操作,都将影像该地址下的值,使得原对象与新对象的值发生变化。

相关文章
|
7月前
|
存储 安全 搜索推荐
c#集合_键值对Dictionary & SortedList
在 C# 中,键值对是一种常见的数据结构,可以使用不同的集合类实现。以下是常用的键值对集合类::一种使用哈希表实现的键值对集合。它通过将键哈希为桶号,然后将值存储在桶中进行快速查找。:一种基于数组实现的键值对集合。它会将键值对按照键排序并存储在数组中,以支持快速访问、查找和枚举。:一种使用红黑树实现的键值对集合。它能够按照键的排序进行快速查找,也可以快速地插入和删除键值对,并且该树具备自平衡的特性,使得插入、删除和搜索性能都非常优秀。
92 1
|
1月前
|
开发框架 .NET C#
C# Dictionary<string, string> 对key做筛选
C# Dictionary<string, string> 对key做筛选
39 2
|
9月前
|
存储 C# C语言
C# OOP之五 深入理解值类型和引用类型
C# OOP之五 深入理解值类型和引用类型
29 0
|
10月前
|
存储 C# 图形学
代码解析 C# 引用类型还是值类型
代码解析 C# 引用类型还是值类型
|
1月前
|
安全 编译器 C#
C#中的可空引用类型:减少空引用异常的利器
【1月更文挑战第9天】C# 8.0中引入的可空引用类型特性,它通过在编译时提供更精确的静态分析,帮助开发者减少运行时的空引用异常。文章详细阐述了可空引用类型的工作原理、如何配置项目以使用此特性,以及在实际编码中如何利用可空引用类型提升代码的健壮性和可读性。
|
6月前
|
存储 C#
C# “值类型“和“引用类型“在内存的分配
C# “值类型“和“引用类型“在内存的分配
|
9月前
|
C#
C#中字典Dictionary的用法详解
C#中字典Dictionary的用法详解
|
11月前
|
C#
C#List与ArrayList,Hashtable与Dictionary总结
C#List与ArrayList,Hashtable与Dictionary总结
39 0
C#List与ArrayList,Hashtable与Dictionary总结
|
C# 数据库
Lua Table转C# Dictionary
Lua Table转C# Dictionary
98 0
|
安全 编译器 C#
30天C#基础巩固-----值类型/引用类型,泛型,空合并操作符(??),匿名方法
30天C#基础巩固-----值类型/引用类型,泛型,空合并操作符(??),匿名方法
94 0
30天C#基础巩固-----值类型/引用类型,泛型,空合并操作符(??),匿名方法