04 2012 档案

摘要:1.深拷贝与浅拷贝 拷贝即是通常所说的复制(Copy)或克隆(Clone),对象的拷贝也就是从现有对象复制一个“一模一样”的新对象出来。虽然都是复制对象,但是不同的复制方法,复制出来的新对象却并非完全一模一样,对象内部存在着一些差异。通常的拷贝方法有两种,即深拷贝和浅拷贝,那二者之间有何区别呢?MSDN里对IClone接口的Clone方法有这样的说明:在深层副本中,所有的对象都是重复的;而在浅表副本中,只有顶级对象是重复的,并且顶级以下的对象包含引用。可以看出,深拷贝和浅拷贝之间的区别在于是否复制了子对象。这如何理解呢?下面我通过带有子对象的代码来验证二者的区别。首先定义两个类型:Studen 阅读全文
posted @ 2012-04-12 14:51 怡馨 阅读(596) 评论(0) 推荐(0)
摘要:C#中有两种类型变量,一种 是值类型变量,一种是引用类型变量,对于值类型变量,深拷贝和前拷贝都是通过赋值操作符号(=)实现,其效果一致,将对象中的值类型的字段拷贝到新的对象中.这个很容易理解。 本文重点讨论引用类型变量的拷贝机制和实现。 C#中引用类型对象的copy操作有两种: 浅拷贝(影子克隆/shallow copy):只复制对象的值类型字段,对象的引用类型,仍属于原来的引用. 深拷贝(深度克隆):不仅复制对象的值类型字段,同时也复制原对象中的对象.就是说完全是新对象产生的. 浅拷贝和深拷贝之间的区别:浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复制它... 阅读全文
posted @ 2012-04-12 14:48 怡馨 阅读(458) 评论(0) 推荐(0)
摘要:一、问题的提出最近,博客园有许多blogger提出了为枚举显示中文名称的文章,例如[让枚举成员显示出中文信息],[利用自定义属性,定义枚举值的详细文本],[细节决定成败:映射枚举],[利用DescriptionAttribute定义枚举值的描述信息],还有原来看过的一些文章(不好意思地址没记)。这些文章的共同特点就是,使用了自定义Attribute附加在枚举值上, 在运行时获取枚举相关的信息。这种方法中,由于是使用反射,因为有些人关心其中的性能问题——特别是处理大量数据的时候,例如将大量枚举导入到DataGrid的时候;而且人们也发现,Enum本身的ToString方法也使用了反射的方法,因此 阅读全文
posted @ 2012-04-07 17:05 怡馨 阅读(397) 评论(0) 推荐(0)
摘要:在WinForm开发中,经常会遇到开发双语版本的问题,利用Resource功能,很容易实现。而前不久,我就遇到了一个难题——枚举的双语显示问题,问题如下:这里先定义一个枚举:enum Sex{Male,Female}然后,我们在WinForm一个窗口中放入一个ComboBox(命名为cbxSex),并把它的数据源绑定到Sex枚举,代码如下:cbxSex.DataSource = enum.GetValues(typeof(Sex));此时,界面显示如下:但是,此时要做中文版时,发现没法在不修改cbxSex.DataSource = enum.GetValues(typeof(Sex))的基础上 阅读全文
posted @ 2012-04-07 16:11 怡馨 阅读(398) 评论(0) 推荐(0)
摘要:1。问题 在设计实体类的时候,通常我们会把某些字段设置为枚举值,例如性别:publicenumSex:int{Male='M',Female='W',NotRestrict='A'} 这样好处不用说,通常是为了直观的考虑,还有限制输入的好处;如果强制用int转换,还以用System.Enum.IsDefined() 来判断枚举是否被定义,但是麻烦的是在界面UI上绑定的时候,我们通常要这样写:<asp:DropDownListRunat="server"id="ddlSex"><asp:Li 阅读全文
posted @ 2012-04-07 15:13 怡馨 阅读(810) 评论(0) 推荐(0)
摘要:Enumeration的默认值是从0开始的int如下: enum Direction{ UP, RIGHT DOWN, LEFT,};此时UP=0, DOWN=1...依此类推改变默认值:enum Direction{ UP=1, RIGHT=2, DOWN=3, LEFT=4,};改变类型(只能改变成:byte, sbyte, short, ushort, int, uint, long, ulong):enum Direction : long{ UP = 1111111111, DOWN = 1111111112, LEFT = 1111111113, RIGHT = 111111111 阅读全文
posted @ 2012-04-07 13:26 怡馨 阅读(1050) 评论(0) 推荐(0)
摘要:1.定义枚举时直接用中文由于VS对中文支持的很不错,所以很多程序员都采用了此方案.缺点:1.不适合多语言 2.感觉不太完美,毕竟大部分程序员大部分代码都使用英文2.利用自定义属性定义枚举值的描述(博客园-大尾巴狼)缺点:不适合多语言原文:http://www.cnblogs.com/hilite/archive/2006/03/28/360793.html枚举定义:[EnumDescription("订单、订单中的产品、产品项的状态。")]public enum OrderStateEnum {[EnumDescription("未开始")] Ready 阅读全文
posted @ 2012-04-07 11:51 怡馨 阅读(1440) 评论(0) 推荐(0)