![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#编写建议-笔记
喝完牛奶好睡觉
大牛就是不断的扣腚...扣腚...
展开
-
建议1 正确操作字符串
字符串是我们常用的基础数据类型,如果使用不当,养成不好的习惯,会对程序造成额外的开销。 建议: 确保尽量少的装箱 避免分配额外的内存空间 确保尽量少的装箱 1:String str1 = "str1" + 9; 2:String str2 = "str2" + 9.ToString(); 第一行代码需要执行一次装箱行为int 转 object 转 string 第二行代码不需要执行原创 2017-05-02 22:34:42 · 313 阅读 · 1 评论 -
建议2 使用默认转型方法
对于如何正确的对类型实现转型也是程序员必须掌握的。对于FCL(Framework Class Library,即Framework类库。)提供的类型进行转型时,都应该使用FCL提供的转型方法。 包括: 使用类型的转型运算符。 使用类型的转型运算符,其实就是使用类型内部的一个方法。转换运算符分为两类:隐式转换和显示转换(强制转换)。基元类型普遍都提供了转换运算符,如: int i=0; fl原创 2017-05-02 22:39:18 · 318 阅读 · 1 评论 -
建议3 区别对待强制转型与as和is
强转和as的区别 如果类型之间都上溯到了某个共同的基类,那么根据此基类进行的转型(即基类转型为子类本身)应该使用as。子类与子类之间的转型,则应该提供转换操作符,以便进行强制转型。 as操作符不能操作基元类型。如果涉及基元类型的转换,就要通过is转型前的类型来进行判断,以避免转型失败。原创 2017-05-02 22:40:43 · 347 阅读 · 1 评论 -
建议4 TryParse比Parse好
除了string外的所有基元类型都提供了Parse和TryParse方法。 区别 如果字符串格式不满足转换的要求,Parse方法将会引发一个异常,TryParse方法则不会引发异常,它会返回false,同时将result置为0。 如果Parse和TryParse执行都成功,它们的效率在一个数量级上,但是如果执行失败,Parse的效率就太低了。 总结 并不建议为所有的类型都提供TryPar原创 2017-05-02 22:41:34 · 343 阅读 · 0 评论 -
建议5 使用int?来确保值类型也可以为null
为什么使用null? 1.数据库中int字段可以设置为null,而不必给初始值。 2.在网络传输中,处理int数据丢失时的存储形式。 3.... int? i=123; int j=i??0; int j=i??0表示的意思是,如果i的HasValue为true,则将i的value赋值给j;否则,就给j赋值为0。 总结 使用可空类型,更加灵活赋值。原创 2017-05-03 23:40:58 · 308 阅读 · 0 评论 -
建议7 将0值作为枚举的默认值
允许使用枚举类型有byte、sbyte、short、ushort、int、uint、long和ulong。 应该始终将0值作为枚举的默认值。因为枚举的默认值就是0,会避免一些不必要的错误。原创 2017-05-03 23:43:43 · 378 阅读 · 1 评论 -
建议8 避免给枚举类型的元素提供显式的值
一般情况下,没有必要给枚举类型的元素提供显式的值。 enum Week { Monday=1, Tuesday=2. ValueTemp, Wednessday=3 } Week week=Week.ValueTemp; Console.WriteLine(week); Console.WriteLine(week==Week.Wednessday); 输出: Wednessday原创 2017-05-03 23:45:09 · 351 阅读 · 3 评论 -
建议6 区别readonly和const的使用方法
区别 const是一个编译期常量,readonly是一个运行时常量。 const只能修饰基元类型,枚举类型和字符串类型,readonly没有限制。 const变量的效率高,是因为经过编译器编译后,我们在代码中引用const变量的地方都会用const变量所对应的实际值来代替 const int ConstValue=100;// const 默认是静态的 Console.Write原创 2017-05-03 23:42:46 · 350 阅读 · 1 评论