using 和 foreach

看到老赵批驳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嵌套呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值