自从C#using
statements只是try/finally{dispose}的语法糖,为什么它接受多个对象仅当它们属于同一类型时?
我不明白,因为它们需要的只是 IDisposable。如果它们都实现 IDisposable 应该没问题,但事实并非如此。
具体来说我习惯于写作
using (var cmd = new SqlCommand())
{
using (cmd.Connection)
{
// Code
}
}
我将其压缩为:
using (var cmd = new SqlCommand())
using (cmd.Connection)
{
// Code
}
我想进一步压缩:
using(var cmd = new SqlCommand(), var con = cmd.Connection)
{
// Code
}
但我不能。有些人可能会说,我可能会写:
using((var cmd = new SqlCommand()).Connection)
{
// Code
}
因为我需要处理的只是连接而不是命令,但这不是重点。
不过你可以这样做:
using (IDisposable cmd = new SqlCommand(), con = (cmd as SqlCommand).Connection)
{
var command = (cmd as SqlCommand);
var connection = (con as SqlConnection);
//code
}
也许这会让你满意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)