(转)扩展方法详解
摘要:一、基础扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。扩展方法是可以通过使用实例方法语法调用的静态方法。效果上,使得附加的方法扩展已存在类型和构造类型成为可能。他可以对现有类功能进行扩充,从而使该类型的实例具有更多的方法。扩展方法有助于把今天动态语言中流行的对快速录入支持的灵活性,与强类型语言之性能和编译时验证融合起来。这里先举一个msdn中的例子:下面的示例演示为 System.String 类定义的一个扩展方法。假设我要分析一个字符串,希望得到字符串
阅读全文
DataContractSerializer类的序列化反序列化规则
摘要:1:不使用特性(DataContract)的前提下 规则一:对象的公有字段和属性都会参与序列化成xml文件; 规则二:对象所在的名称空间会作为xml文件的命名空间; 规则三:xml文件的节点顺序按照英文字母排序(和对象的公有字段和属性顺序无关); 规则四:如果对象存在继承关系,那么xml文件节点顺序是优先取基类的成员; 规则五:xml文件反序列化成对象时按照xml文件节点的英文字母排序 规则六:如果对象存在继承关系,那么优先反序列化基类;上代码:View Code 1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4
阅读全文
(转)C#中“Equals”与“==”的速度比较
摘要:最初接触C#时就一直疑惑,比较字符串的方法:“Equals”与“==”在比较时性能有什么区别呢?相信这个问题也曾困惑着许多人,那么我们就一起来探讨下:比较一个string是否等于一个值,最初接触C#的人会这么写:string myStr = "value"; if (myStr.Equals("value")) { } if (myStr == "value") { }然后,会有人笑你很菜,得知把要判断的value写在前面性能高些,要这样写:string myStr = "value"; if ("val
阅读全文