51
Dev开发社区
首页
文章
问答
工具
搜索
登录
注册
#网赚程序
【转】编写高质量代码改善C#程序的157个建议——建议26:使用匿名类型存储LINQ查询结果
建议26:使用匿名类型存储LINQ查询结果从.NET3.0开始,C#开始支持一个新特性:匿名类型。匿名类型有var、赋值运算符和一个非空初始值(或以new开头的初始化项)组成。匿名类型有如下基本特性:即支持简单类型也指出复杂类型。简单类型必须是一个非空初始值,复杂类型则是一个以new开头的初始化项。匿名类型...
代码星球
·
2020-04-06
建议
编写
高质量
代码
改善
【转】编写高质量代码改善C#程序的157个建议——建议25:谨慎集合属性的可写操作
建议25:谨慎集合属性的可写操作如果类型的属性中有集合属性,那么应该保证属性对象是由类型本身产生的。如果将属性设置为可写,则会增加抛出异常的几率。一般情况下,如果集合属性没有值,则它返回的Count等于0,而不是集合属性的值为null。下面的代码将产生一个NullReferenceException异常:c...
代码星球
·
2020-04-06
建议
编写
高质量
代码
改善
【转】编写高质量代码改善C#程序的157个建议——建议23:避免将List<T>作为自定义集合类的基类
建议23:避免将List<T>作为自定义集合类的基类如果要实现一个自定义的集合类,不应该以一个FCL集合类为基类,反而应扩展相应的泛型接口。FCL结合类应该以组合的形式包含至自定义的集合类,需要扩展的泛型接口通常是IEnumerable<T>和ICollection<T>...
代码星球
·
2020-04-06
建议
编写
高质量
代码
改善
【转】编写高质量代码改善C#程序的157个建议——建议24:迭代器应该是只读的
建议24:迭代器应该是只读的如果注意观察会发现,FCL中的迭代器只有GetEnumerator方法,没有SetEnumerator方法,所有的集合类也没有一个可以写的迭代器属性。原因有二:一:这违背了设计模式的开闭原则。被设置到集合中的迭代器可能会直接导致集合的行为发生异常或变动。一旦确实需要新的迭代要求,...
代码星球
·
2020-04-06
建议
编写
高质量
代码
改善
【转】编写高质量代码改善C#程序的157个建议——建议22:确保集合的线程安全
建议22:确保集合的线程安全集合线程安全是指多个线程上添加或删除元素时,线程键必须保持同步。下面代码模拟了一个线程在迭代过程中,另一个线程对元素进行了删除。classProgram{staticList<Person>list=newList<Person>(){newPerson(...
代码星球
·
2020-04-06
建议
编写
高质量
代码
改善
【转】编写高质量代码改善C#程序的157个建议——建议21:选择正确的集合
建议21:选择正确的集合要选择正确的集合,首先要了解一些数据结构的知识。所谓数据结构,就是相互之间存在一种或多种特定关系的数据元素的集合。集合的分类参考下图:由于非泛型集合存在效率低及非类型安全的缺点,所以这里只讨论泛型集合。如果集合的数目固定并且不涉及转型,使用数组效率高,否则使用List<T>...
代码星球
·
2020-04-06
建议
编写
高质量
代码
改善
【转】编写高质量代码改善C#程序的157个建议——建议20:使用泛型集合代替非泛型集合
建议20:使用泛型集合代替非泛型集合在建议1中我们知道,如果要让代码高效运行,应该尽量避免装箱和拆箱,以及尽量减少转型。很遗憾,在微软提供给我们的第一代集合类型中没有做到这一点,下面我们看ArrayList这个类的使用情况:ArrayListal=newArrayList();al.Add(0);al.Ad...
代码星球
·
2020-04-06
建议
集合
编写
高质量
代码
【转】编写高质量代码改善C#程序的157个建议——建议19:使用更有效的对象和集合初始化
建议19:使用更有效的对象和集合初始化 依赖于属性和FCL3.5之后的语法规则,现在我们有了更加简洁有效的对象和集合初始化机制:对象和集合初始化设定项。对象初始化:classPerson{publicstringName{get;set;}publicintAge{get;set;}}classP...
代码星球
·
2020-04-06
建议
编写
高质量
代码
改善
【转】编写高质量代码改善C#程序的157个建议——建议17:多数情况下使用foreach进行循环遍历
建议17:多数情况下使用foreach进行循环遍历由于本建议涉及集合的遍历,所以在开始讲解本建议之前,我们不妨来设想一下如何对结合进行遍历。假设存在一个数组,其遍历模式可以采用依据索引来进行遍历的方法;又假设存在一个HashTable,其遍历模式可能是按照键值来进行遍历。无论是哪个集合,如果他们的遍历没有一...
代码星球
·
2020-04-06
建议
编写
高质量
代码
改善
【转】编写高质量代码改善C#程序的157个建议——建议18:foreach不能代替for
建议18:foreach不能代替for上一个建议中提到了foreach的两个优点:语法更简单,默认调用Dispose方法,所有我们强烈建议在实际的代码编写中更多的使用foreach。但是,该建议也有不适合的场景。foreach存在一个问题:它不支持循环时对集合进行增删操作。比如,运行下面代码会抛出异常Inv...
代码星球
·
2020-04-06
建议
编写
高质量
代码
改善
【转】编写高质量代码改善C#程序的157个建议——建议16:元素数量可变的情况下不应使用数组
建议16:元素数量可变的情况下不应使用数组在C#中,数组一旦被创建,长度就不能改变。如果我们需要一个动态且可变长度的集合,就应该使用ArrayList或List<T>来创建。而数组本身,尤其是一维数组,在遇到要求高效率的算法时,则会专门被优化以提升其效率。一维数组也成为向量,其性能是最佳的,在I...
代码星球
·
2020-04-06
建议
编写
高质量
代码
改善
【转】编写高质量代码改善C#程序的157个建议——建议15: 使用dynamic来简化反射实现
建议15:使用dynamic来简化反射实现dynamic是Framework4.0的新特性。dynamic的出现让C#具有了弱语言类型的特性。编译器在编译的时候不再对类型进行检查,编译器默认dynamic对象支持开发者想要的任何特性。比如,即使你对GetDynamicObject方法返回的对象一无所知,也可...
代码星球
·
2020-04-06
建议
编写
高质量
代码
改善
【转】编写高质量代码改善C#程序的157个建议——建议14: 正确实现浅拷贝和深拷贝
建议14:正确实现浅拷贝和深拷贝为对象创建副本的技术称为拷贝(也叫克隆)。我们将拷贝分为浅拷贝和深拷贝。浅拷贝 将对象中的所有字段复制到新的对象(副本)中。其中,值类型字段的值被复制到副本中后,在副本中的修改不会影响到源对象对应的值。而引用类型的字段被复制到副本中的是引用类型的引用,而不是引用的对象,在副本...
代码星球
·
2020-04-06
建议
拷贝
编写
高质量
代码
【转】编写高质量代码改善C#程序的157个建议——建议13: 为类型输出格式化字符串
建议13:为类型输出格式化字符串有两种方法可以为类型提供格式化的字符串输出。一种是意识到类型会产生格式化字符串输出,于是让类型继承接口IFormattable。这对类型来说,是一种主动实现的方式,要求开发者可以预见类型在格式化方面的要求。更多的时候,类型的使用者需为类型自定义格式化器,这就是第二种方法,也是...
代码星球
·
2020-04-06
建议
编写
高质量
代码
改善
【转】编写高质量代码改善C#程序的157个建议——建议12: 重写Equals时也要重写GetHashCode
建议12:重写Equals时也要重写GetHashCode除非考虑到自定义类型会被用作基于散列的集合的键值;否则,不建议重写Equals方法,因为这会带来一系列的问题。如果编译上一个建议中的Person这个类型,编译器会提示这样一个信息:“重写Object.Equals(objecto)但不重写...
代码星球
·
2020-04-06
建议
重写
编写
高质量
代码
首页
上一页
...
138
139
140
141
142
...
下一页
尾页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他