上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 25 下一页
摘要: 建议18:foreach不能代替for 上一个建议中提到了foreach的两个优点:语法更简单,默认调用Dispose方法,所有我们强烈建议在实际的代码编写中更多的使用foreach。但是,该建议也有不适合的场景。 foreach存在一个问题:它不支持循环时对集合进行增删操作。比如,运行下面代码会抛 阅读全文
posted @ 2017-11-29 16:45 指间的徘徊 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 建议16:元素数量可变的情况下不应使用数组 在C#中,数组一旦被创建,长度就不能改变。如果我们需要一个动态且可变长度的集合,就应该使用ArrayList或List<T>来创建。 而数组本身,尤其是一维数组,在遇到要求高效率的算法时,则会专门被优化以提升其效率。一维数组也成为向量,其性能是最佳的,在I 阅读全文
posted @ 2017-11-29 16:43 指间的徘徊 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 建议15: 使用dynamic来简化反射实现 dynamic是Framework 4.0的新特性。dynamic的出现让C#具有了弱语言类型的特性。编译器在编译的时候不再对类型进行检查,编译器默认dynamic对象支持开发者想要的任何特性。比如,即使你对GetDynamicObject方法返回的对象 阅读全文
posted @ 2017-11-29 16:35 指间的徘徊 阅读(441) 评论(0) 推荐(0) 编辑
摘要: 建议14: 正确实现浅拷贝和深拷贝 为对象创建副本的技术称为拷贝(也叫克隆)。我们将拷贝分为浅拷贝和深拷贝。 浅拷贝 将对象中的所有字段复制到新的对象(副本)中。其中,值类型字段的值被复制到副本中后,在副本中的修改不会影响到源对象对应的值。而引用类型的字段被复制到副本中的是引用类型的引用,而不是引用 阅读全文
posted @ 2017-11-29 16:26 指间的徘徊 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 建议13: 为类型输出格式化字符串 有两种方法可以为类型提供格式化的字符串输出。一种是意识到类型会产生格式化字符串输出,于是让类型继承接口IFormattable。这对类型来 说,是一种主动实现的方式,要求开发者可以预见类型在格式化方面的要求。更多的时候,类型的使用者需为类型自定义格式化器,这就是第 阅读全文
posted @ 2017-11-29 16:20 指间的徘徊 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 建议12: 重写Equals时也要重写GetHashCode 除非考虑到自定义类型会被用作基于散列的集合的键值;否则,不建议重写Equals方法,因为这会带来一系列的问题。 如果编译上一个建议中的Person这个类型,编译器会提示这样一个信息: “重写 Object.Equals(object o) 阅读全文
posted @ 2017-11-29 16:17 指间的徘徊 阅读(359) 评论(0) 推荐(0) 编辑
摘要: 建议11: 区别对待==和Equals 在开始本建议之前,首先要明确概念“相等性”。CLR中将“相等性”分为两类:“值相等性”和“引用相等性”。如果用来比较的两个变量所包含的数值相等,那么将其定义为“值相等性”;如果比较的两个变量引用的是内存中的同一个对象,那么将其定义为“引用相等性”。 无论是操作 阅读全文
posted @ 2017-11-29 16:13 指间的徘徊 阅读(443) 评论(0) 推荐(0) 编辑
摘要: 建议10: 创建对象时需要考虑是否实现比较器 有对象的地方就会存在比较,在.NET的世界中也一样。举个最简单的例子,在UI中,有一个10个人的Salary列表。根据排序的需要,列表要支持针对基本工资来罗列Salary。这个时候,接口IComparable就会起作用,代码如下所示: 注意 上面代码中C 阅读全文
posted @ 2017-11-29 12:01 指间的徘徊 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 建议9: 习惯重载运算符 在开发过程中,应该习惯于使用微软提供给我们的语法特性。我想每个人都喜欢看到这样的语法特性: 而不是用下面的语法来完成一样的事情: 同理,在构建自己的类型时,我们应该始终考虑该类型是否可以用于运算符重载。如果考虑类型Salary,下面的这段代码看起来就不是那么舒服了: 应该使 阅读全文
posted @ 2017-11-29 11:57 指间的徘徊 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 建议8: 避免给枚举类型的元素提供显式的值 一般情况下,没有必要给枚举类型的元素提供显式的值。创建枚举的理由之一,就是为了代替使用实际的数值。不正确地为枚举类型的元素设定显式的值,会带来意想不到的错误。 如果为建议7中的枚举类型Week增加一个元素,代码如下所示: 设想一下ValueTemp的值会是 阅读全文
posted @ 2017-11-29 11:54 指间的徘徊 阅读(410) 评论(0) 推荐(0) 编辑
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 25 下一页