c# - 使用 vs lambda

标签 c# .net functional-programming

<分区>

是否等价?

        public static void Using<T>(this T disposable, Action<T> action)
            where T:IDisposable
        {
            try {
                action(disposable);
            }
            finally {
                disposable.Dispose();
            }
        }

        new SqlConnection("").Using(conn => {

        });

        using(var conn = new SqlConnection("")){

        };

也就是说,我们可以用这个方法代替using关键字吗?

最佳答案

我不认为这是一个特别好的主意,因为它也可以让我们写

var conn = new SqlConnecction("");
conn.Using(c => /* do something with c */);
conn.Open();

这会编译,但是当你到达最后一行时,它会抛出一个 ObjectDisposedException。

无论如何,using 编码惯用语是众所周知的,那么为什么要让您的开发人员更难阅读您的代码呢?

关于c# - 使用 vs lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2199895/

相关文章:

c# - 我如何强制使用 exe 构建 DLL,以便只有一个文件?

c# - 如何使用 Roslyn 获取编译时间常量值

haskell - 在 Haskell 中调试/可视化递归函数调用的最简单方法?

c# - 创建带有捕获异常信息的 Windows 窗体?

c# - 从 int 输入确定回文

.net - 为什么在 Option Strict On 的情况下允许将 Double 分配给 Single

c# - 从另一个类(class)收听 PropertyChanged

c# - 如何处理委托(delegate)目标中发生的异常

java - 重用部分流映射和过滤来组成两个不同的结果

javascript - 如何在 FP (Ramda.js) 中重写这个函数?