一个空的尝试有一些价值,如
elsewhere所述
try{}
finally
{
..some code here
}
但是,有没有用于空的最终如:
try
{
...some code here
}
finally
{}
编辑:注意我实际上没有检查过CLR是否有任何为空的最终生成的代码{}
最佳答案 在try-finally语句中清空finally块是没用的.从
MSDN起
By using a finally block, you can clean up any resources that are
allocated in a try block, and you can run code even if an exception
occurs in the try block.
如果finally语句为空,则表示根本不需要此块.它还可以显示您的代码不完整(例如,这是DevExpress在代码分析中使用的the rule).
实际上,很容易证明try-finally语句中的空finally块是无用的:
使用此代码编译一个简单的控制台程序
static void Main(string[] args)
{
FileStream f = null;
try
{
f = File.Create("");
}
finally
{
}
}
在IL反汇编程序(或任何其他可以显示IL代码的工具)中打开已编译的dll,您将看到编译器只是删除了try-finally块:
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 12 (0xc)
.maxstack 8
IL_0000: ldstr ""
IL_0005: call class [mscorlib]System.IO.FileStream [mscorlib]System.IO.File::Create(string)
IL_000a: pop
IL_000b: ret
} // end of method Program::Main