空try值具有某些价值,如其他地方所述
try{}
finally
{
..some code here
}
Run Code Online (Sandbox Code Playgroud)
但是,最后有什么用为空:
try
{
...some code here
}
finally
{}
Run Code Online (Sandbox Code Playgroud)
编辑:注意我还没有实际检查以查看CLR是否为空生成任何代码 finally{}
语句中的空finally块try-finally是无用的。来自MSDN
通过使用 finally 块,您可以清理在 try 块中分配的任何资源,并且即使在 try 块中发生异常也可以运行代码。
如果finally语句为空,则表示您根本不需要此块。它还可以显示您的代码不完整(例如,这是DevExpress 用于代码分析的规则)。
实际上,很容易证明语句中的空finally块try-finally是无用的:
使用此代码编译一个简单的控制台程序
static void Main(string[] args)
{
FileStream f = null;
try
{
f = File.Create("");
}
finally
{
}
}
Run Code Online (Sandbox Code Playgroud)
在 IL Disassembler(或任何其他可以显示 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
Run Code Online (Sandbox Code Playgroud)