空的try
具有某些值,如elsewhere所述
try{}
finally
{
..some code here
}
但是,最后是否有空有什么用,例如:
try
{
...some code here
}
finally
{}
编辑:注意我还没有实际检查以查看CLR是否为空的
finally{}
生成了任何代码 最佳答案
finally
语句中的空try-finally
块是无用的。从MSDN
如果finally
语句为空,则意味着您根本不需要此块。它还可能显示您的代码不完整(例如,DevExpress在代码分析中使用的the rule)。
实际上,很容易证明finally
语句中的空try-finally
块是无用的:
使用此代码编译一个简单的控制台程序
static void Main(string[] args)
{
FileStream f = null;
try
{
f = File.Create("");
}
finally
{
}
}
在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
关于c# - 最终清空{}有什么用吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34363478/