知识大全 扩展方法 之 基本数据篇
Posted 类型
篇首语:知识的价值不在于占有,而在于使用。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 扩展方法 之 基本数据篇相关的知识,希望对你有一定的参考价值。
C# 中有两种基本数据类型 值类型和引用类型 值类型包括 简单类型 结构类型 枚举类型 引用类型包括 Object 类型 类类型 接口 代表元 字符串类型 数组 说白了这篇就是扩展 int string double DateTime 等基本类型 这么多数据类型 如果int来个扩展 double也来个扩展 肯定会是一个造金字塔工程 幸好有泛型帮我们 但是有时泛型也不是万能的 这个以后有机会再说 为什么我们需要扩展方法?一句话 提高写代码的速度 语义也清晰 按道理说 基于基本数据的扩展方法应该经常被用到才有意义 否则只会 污染 被扩展的元素 而怎么才算常用 这可没什么标准 也不是我一个人说了算 所以 以下的扩展方法大家就根据自己的经验判断是否常用吧 至少我的项目是用了不少 In 判断一个元素是否在一个集合里面 (这是我目前为止见到最好的扩展方法之一) ScottGu 最初的版本
后经 鹤冲天 的润色 c#扩展方法奇思妙用高级篇一 改进 Scottgu 的 In 扩展 //ScottGu In扩展 改进 public static bool In(this T t params T[] c) return c Any(i => i Equals(t)); 最后我也来凑个热闹 public static bool In(this T t params T[] c) return c Contains(t); //return c Any(i => i Equals(t)); 示例 bool exist = In( );string[] helloworld = Hello World ! ;bool exist = Hello In(helloworld ); InRange 判断一个元素是否在某个范围 public static bool InRange(this IComparable t T minT T maxT) return t CompareTo(minT) >= && t CompareTo(maxT) <= ; public static bool InRange(this IComparable t object minT object maxT) return t CompareTo(minT) >= && t CompareTo(maxT) <= ; 示例 //判断 是否在 ~ 的范围bool result = InRange( ); //判断 是否在 ~ 的范围bool result = InRange( );//判断今天是否在 年 月 日~ 年 月 日的范围bool result = DateTime Now InRange(new DateTime( ) new DateTime( ));//判断牛B是否在牛A和牛C之间bool result = 牛B InRange( 牛A 牛C ); 上面最后一个示例来源于这句网语 做一个徘徊于牛A和牛C之间的人 ForEach 遍历集合 public static void ForEach(this IEnumerable source Action action) foreach (T element in source) action(element); public static void ForEach(this IEnumerable source Actionint> action) int i = ; foreach (T element in source) action(element i++); 注 这两个并非原创 但实在太通用 已经找不到出处 示例 Linq to SQL 批量更新 //Linq to SQL IQueryable query = ;query ForEach(c => c Name = Bruce );db SubmitChanges(); 示例 设置行号 List list = list ForEach((c i) => c Line = (i+ )); Clone 克隆一个对象 public static T Clone(this T t) return (T)CloneObject(t); private static object CloneObject(object obj) using (MemoryStream memStream = new MemoryStream()) BinaryFormatter binaryFormatter = new BinaryFormatter(null new StreamingContext(StreamingContextStates Clone)); binaryFormatter Serialize(memStream obj); memStream Seek( SeekOrigin Begin); return binaryFormatter Deserialize(memStream); 示例 克隆单个实体 Entity entity = new Entity Name = Bruce Line = ; Entity cloneEntity = entity Clone(); bool same = entity Equals(cloneEntity); // 被克隆的类必须标记为可序列化 [Serializable] class Entity public string Name get; set; public int Line get; set; 最后entity Equals(cloneEntity);的结果是false 表明已经成功克隆了一个新对象 示例 克隆集合 List list = new List(); list Add(new Entity Name = Bruce Line = ); list Add(new Entity Name = Jack Line = ); list Add(new Entity Name = Rose Line = ); list Add(new Entity Name = Tony Line = ); List cloneList = list Clone();总结 扩展方法为我们封装了常用的逻辑 与以往静态方法不同的是 从使用者的角度来看已经不用关心这个方法是来自于那个类 主要记着命名空间就可以 所以 一般做法是 所有扩展方法属于同一命名空间 并按被扩展的类型分类 如下图
cha138/Article/program/net/201311/13116相关参考
数据结构课程集中讨论软件开发过程中的设计阶段同时设计编码和分析阶段的若干基本问题此外为了构造出好的数据结构及其实现还需考虑数据结构及其实现的评价与选择因此数据结构的内容包括三个层次的五个要素如图所
从上面所介绍的数据结构的概念中可以知道一个数据结构有两个要素一个是数据元素的集合另一个是关系的集合在形式上数据结构通常可以采用一个二元组来表示 数据结构的形式定义为数据结构是一个二元组 Dat
VisualC++开发数据库基础之ADO篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一AD
数据结构是计算机科学与技术专业的专业基础课是十分重要的核心课程所有的计算机系统软件和应用软件都要用到各种类型的数据结构因此要想更好地运用计算机来解决实际问题仅掌握几种计算机程序设计语言是难以应付众
VS2005数据存取层深入剖析高级篇 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一扩展表格适配器
知识大全 SQL Server2005的XML数据类型之基础篇[2]
SQLServer2005的XML数据类型之基础篇[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 SQL Server2005的XML数据类型之基础篇[4]
SQLServer2005的XML数据类型之基础篇[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 SQL Server2005的XML数据类型之基础篇[1]
SQLServer2005的XML数据类型之基础篇[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 SQL Server2005的XML数据类型之基础篇[3]
SQLServer2005的XML数据类型之基础篇[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
诸如此类的还有电话自动查号系统考试查分系统仓库库存管理系统等在这类文档管理的数学模型中计算机处理的对象之间通常存在着的是一种简单的线性关系这类数学模型可称为线性的数据结构 八皇后问题在八皇后问题