【发布时间】:2018-04-12 15:54:29
【问题描述】:
我有一个相当于
的 XAML 工作流Bar bar;
if (foo.SomeFlag)
{
// ... do stuff
bar = .. // set bar, guaranteed unless exception thrown earlier in this block
}
// do other stuff
// here it is guaranteed that foo.SomeFlag is the same as it was before
if (foo.SomeFlag)
{
// use bar
}
在纯 C# 中,我是如何尝试重写它的。问题是我收到Use of unassigned variable 'bar' .. 编译器错误。我理解这个错误,但我想我可以通过写作来克服它
Bar bar;
const bool someFlag = foo.SomeFlag;
if (someFlag)
{
// ... do stuff
bar = .. // set bar, guaranteed unless exception thrown earlier in this block
}
// do other stuff
if (someFlag)
{
// use bar
}
但显然这不是有效的语法。
任何想法如何克服?
【问题讨论】:
-
为什么不将
bar设置为null并稍后检查呢?随着时间的推移,您的标志可能会变得不同步。 -
您可以使用
else块,但不清楚您要做什么 -
is 实际上是一个已知的明确分配错误,可以 用来欺骗这个,但是您的代码会立即出现错误。不要试图欺骗编译器:只要……给它一个值!
-
重构你的
// Do Other Stuff,不要拆分条件:if (!someFlag) DoOtherStuff(); else { DoStuff(); bar = SetBar() ;DoOtherStuff(); UseBar(bar); }
标签: c# .net visual-studio xaml