引用类型的赋值问题--.net 中的Deep Clone
来源:互联网 发布:飞天侠淘宝干嘛的 编辑:程序博客网 时间:2024/05/02 21:20
为了在程序中批量传参数,我将参数封装到一个类中,在程序中有如下代码:
var myPanel = new PanelClass() { dictPanel = panelB.dictPanel, dictFilePanel = panelB.dictFilePanel };
panelB.Clear();
当执panelB执行了Clear之后,发现myPanel的相关属性也被Clear了。
后来查阅资料,问题是引用类型同时指向同一个实体,要想属性不被 Clear掉,
要进行Deep Clone。
public PanelClass Clone()
{
if(!typeof(PanelClass).IsSerializable)
{
throw new ArgumentException("The type must be serializable.","PanelClass");
}
if(Object.ReferenceEquals(this,null))
{
return default(PanelClass);
}
IFormatter formatter = new BinaryFormatter();
Stream stream = new MemoryStream();
using(stream)
{
formatter.Serialize(stream, this);
stream.Seek(0, SeekOrigin.Begin);
return (PanelClass)formatter.Deserialize(stream);
}
}
其中相关类头上要增加可序列化标志[Serializable],这样问题可正常解决。
- 引用类型的赋值问题--.net 中的Deep Clone
- JavaScript中的基本类型和引用类型的赋值问题和传参问题
- C#.NET Deep Clone
- 引用类型的赋值函数
- C#值类型赋值与引用类型的赋值
- C#值类型赋值与引用类型的赋值
- C#值类型赋值与引用类型的赋值
- C#值类型赋值与引用类型的赋值
- 关于引用的赋值问题
- asp.net中的Session的赋值引用和地址引用(DataTable)
- C#引用类型的赋值机制
- C#引用类型的赋值机制
- (集合和引用类型、基本数据类型赋值不一样)一个简单的java问题 先后的赋值问题
- .NET中的值类型和引用类型~~~
- .NET中的值类型和引用类型
- 利用Jquery中的clone对象解决JS中引用传值的问题
- Prototype中的shallow clone 与deep clone 与new 一个实例的区别
- JS基本类型和引用类型赋值的区别
- B
- Packets switched through Linux bridge have very high packet delay variation and latency?
- Java字符串
- 设计模式学习之模版方法模式
- 虚函数浅析
- 引用类型的赋值问题--.net 中的Deep Clone
- 数据结构与算法(c++)--拓扑排序
- DAY_01 HTML小白学习笔记
- QT多线程选项
- webpack
- 【应用实例】增强现实应用开发—3D模型、视频、音频、交互
- 在QT集成开发环境中用OpenCV读取一张图片显示在Qlabel上
- 【Unity3D_UGUI速成班】——07.Scrollbar
- 从函数的零点问题到二分法的应用