string foo;
try
{
foo = "test"; // yeah, i know ...
}
catch // yeah, i know this one too :)
{
foo = null;
}
finally
{
Console.WriteLine(foo); // argh ... @#!
}
Console.WriteLine(foo); // but nothing to complain about here
除了它不是BP(捕捉路由) - 但这是我能得到的最好的隔离。
但是我收到了很好的信息,告诉我“危险,危险 - 可能未初始化”。 怎么回事?为什么我的变量仍然是“未初始化”?
编辑:
请不要建议“简单地说一个string foo = string.Empty;
在‘声明’”。我想宣布它,但只是按时完成任务!
指定一个null,这是有效的,并会安抚编译器,然后完全摆脱捕获。 –
@AdamHouldsworth我已经提到这是一个孤立的例子,对不对?我必须在我的*真实*场景中使用catch,因为我在其中有一些其他代码:) –
是的,但您尚未提供一个可靠的参数,以便在事先没有使用null初始化它。你在另一评论中表示你不想这样做。 Manojlds的答案可能是原因,最终被认为是超出了试用范围,所以MSDN文档条目依然存在。 –