C#高效编程话题集1(每期10话题)
C#高效编程话题集1(每期10话题)
2011-03-02 09:02 by 陆敏技, 3364 visits, 网摘, 收藏, 编辑
return Number.FormatInt32(m_value, null, NumberFormatInfo.CurrentInfo);
}
可能有人会问,那是不是原型中的Number.FormatInt32方法会发生装箱行为呢?实际Number.FormatInt32方法是一个非托管的方法,原型如下:
public static extern string FormatInt32(int value, string format, NumberFormatInfo info);
所以,答案是:后者
优势在于as,is 不抛出异常,如果转型失败,则返回null
强制转型则会抛出异常,导致代码必须处理异常,效率低。
值得注意的是,as只能转型基本类型,对于基本类别如int等的转型,只能使用强制转型或is。
3:readonly和const的区别或者说哪个更好
2:const只能修饰基元类型;readonly无此限制;
3:const是编译期常量;readonly为运行期常量,其初始值除了在初始化器还可以在类型的构造函数中设定;
4:const经编译后,以实际值代替了变量(可查看IL验证),效率显然要高一些,可用到关键算法中,除此之外,与readonly比没有任何优势。
1:如果不指定枚举的零值,会带来什么问题;
static void Main(string[] args)
{
Console.WriteLine(week);
}
即使未给week赋值,也会打印出零值。
2:如果为枚举中的元素指定了相同的值,又会带来什么问题。
var AllCustomers = from Customer in db.Customers
select new { Customer.ContactName, Customer.Country };
var addMethod = typeof(DynamicSample).GetMethod("Add");
int re = (int)addMethod.Invoke(dynamicSample, new object[] { 1, 2 });
在使用dynamic后,我们的代码看上去更简洁了,并且在可控的范围内减少了一次拆箱的机会:
int re2 = dynamicSample2.Add(1, 2);
8:foreach不能替代for的原因
foreach (int item in list)
{
list.Remove(item);
Console.WriteLine(item.ToString());
}
会抛出异常,而改为for则不会。这是for不能被foreach取代叼的最重要原因。
2:foreach默认调用集合的迭代器的Dispose方法,如果该迭代器继承了IDispose方法的话。
1:可扩展性太低,如果存在新的排序要求,就得实现新的比较器;
2:对代码的侵入性太高,为类型继承了接口,增加了新的方法;
可参见博文的讨论:http://www.cnblogs.com/luminji/archive/2011/02/17/1956723.html。
在我们自己的代码中强烈建议你利用LINQ带来便捷性,但我们仍需掌握比较器、迭代器、索引器的原理,以便我们更好地理解LINQ的思想,写出更加高质量的代码。
C#高效编程话题集1(每期10话题)相关推荐
- 专业嵌入式软件开发——全面走向高质高效编程(含DVD光盘1张)
-- 专业嵌入式软件开发--全面走向高质高效编程(含DVD光盘1张) 李云 编著 ISBN 978-7-121-14783-8 2012年1月出版 定价:108.00元(含DVD光盘1张) 16开 6 ...
- 【转载】架构师速成-如何高效编程
引子 赵云大喝一声,挺枪骤马杀入重围,左冲右突,如入无人之境.那枪浑身上下,若舞梨花:遍体纷纷,如飘瑞雪. 赵云是所有历史人物中我最喜欢的一个,如果放到现代,他走了it的道路,一定可以成为一个编程高手 ...
- ROS机器人高效编程(原书第3版)勘误、问题及资料汇总
ROS机器人高效编程(原书第3版)勘误.问题及资料汇总--持续更新 如果小伙伴发现书中错误,恳请批评指正,非常感谢.勘误在文末. 补充一行代码装ROS,适用于14.04LTS(indigo)和16.0 ...
- 数学与泛型编程:高效编程的奥秘pdf下载_【编程入门】提升孩子全脑思维、逻辑能力,帮你省下万元培训费...
现在什么辅导班最火.最烧钱? 大概"少儿编程"当之无愧. 继"奥数"之后,少儿编程再次成为家长的纠结: 上还是不上? 不上真的会"输在起跑线上&quo ...
- 架构师速成之路 架构师速成-如何高效编程 for java
赵云大喝一声,挺枪骤马杀入重围,左冲右突,如入无人之境.那枪浑身上下,若舞梨花:遍体纷纷,如飘瑞雪. 赵云是所有历史人物中我最喜欢的一个,如果放到现代,他走了it的道路,一定可以成为一个编程高手.为什 ...
- 架构师速成-如何高效编程 for java
引子 赵云大喝一声,挺枪骤马杀入重围,左冲右突,如入无人之境.那枪浑身上下,若舞梨花:遍体纷纷,如飘瑞雪. 赵云是所有历史人物中我最喜欢的一个,如果放到现代,他走了it的道路,一定可以成为一个编程高手 ...
- 你不知道的18个Python高效编程技巧
来源 | Python编程时光 初识Python语言,觉得python满足了我上学时候对编程语言的所有要求.python语言的高效编程技巧让我们这些大学曾经苦逼学了四年c或者c++的人,兴奋的不行不行 ...
- PTA 基础编程题目集 7-7 12-24小时制 C语言
PTA 基础编程题目集 7-7 12-24小时制 C语言 编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间. 输入格式: 输入在一行中给出带有中间的:符号(半角的冒号)的24小时制 ...
- PTA 基础编程题目集 7-22 龟兔赛跑 C语言
PTA 基础编程题目集 7-22 龟兔赛跑 C语言 乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息.乌龟每分钟可以前进3米,兔子每分钟前进9米:兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于 ...
最新文章
- enscape助手_SDT Enscape助手
- php在sql中添加数据,使用php在oracle数据库中插入数据
- Apache+PHP+MySQL安装与配置
- pycharm的console输入如何换行
- java实现遍历树形菜单方法——数据库表的创建
- Android笔记 动画之tween(补间)动画demo
- cad2016中选择全图字体怎么操作_抖音上的书单都是用啥做的,抖音书单图片怎么做...
- 5G(3)---5G NR协议栈及功能2 - MAC RLC PDCP SDAP
- 剑指offer22-链表中倒数第k个结点
- Java基础学习总结(43)——Java8 Lambda揭秘
- UVA11942 Lumberjack Sequencing【Ad Hoc】
- 转:Web页面通过URL地址传递参数常见问题及检测方法
- 列存储中常用的数据压缩算法
- C64x+ 与 C64x Cache 区别
- ntfs在linux上读取,详解在Mac系统上读取Windows NTFS方法
- 存储服务器 自建,搭建及了解存储服务器
- 计算机课程总结word,大学生的计算机课程总结word.docx
- 【论文阅读】Reviving Iterative Training with Mask Guidance for Interactive Segmentation
- 用ArcGIS制作核密度分析图
- 重庆大学计算机学院课题组,【计算机】计算机学院关于智能计算的大规模优化学术报告圆满结束...