看到老赵批驳firelong的文章中引用的的两个例子,很感叹他的逻辑说服力!
原文如下:
using关键字
首先是using关键字,using关键字的作用是对IDisposable资源作管理,保证不会发生泄漏等问题。例如:
using (var stream = new FileStream("", FileMode.Create)) { // do something }
那么,它又是怎么做的呢?其实效果是这样的:
var stream = new FileStream("", FileMode.Create); try { // do something } finally { if (stream != null) { stream.Dispose(); } }
看代码不说话。我想了解一下,您是喜欢直接写第二段代码,还是写using代码呢?
foreach关键字
foreach关键字是配合IEnumerable作遍历时使用的,比如这样的代码:
foreach (var i in source) { Console.WriteLine(i); }
其实等价于:
using (var etor = source.GetEnumerator()) { while (etor.MoveNext()) { Console.WriteLine(etor.Current); } }
咦,看上去并不复杂啊,只是多了一级缩进而已。不过您注意到没有,这里居然用到了“臃肿”的using关键字,所以说,这里的代码理应是这样写的:
var etor = source.GetEnumerator(); try { while (etor.MoveNext()) { Console.WriteLine(etor.Current); } } finally { if (etor != null) { etor.Dispose(); } }
看代码不说话。我想了解一下,您是喜欢直接写第二段代码,还是写foreach代码呢?如果有两层foreach嵌套呢?
本文通过实例对比了C#中的using关键字与foreach关键字的使用方式,深入探讨了这两种语法糖如何帮助开发者更简洁地管理资源及遍历集合,旨在提高代码的可读性和维护性。
132

被折叠的 条评论
为什么被折叠?



