我问自己是否有可能在一个只在条件为真但没有使用sum({@X})
语句时才执行的方法中使用return
。如果条件为假,则不会返回任何内容。
为了更好地理解:
if
然后 public bool MyMethod()
{
if (HasErrors())
return HasErrors();
// Some more code
}
也会返回一些东西。我现在想到这样的事情:
Some more code
但只有在public bool MyMethod()
{
return HasErrorsButReturnsOnlyIfTrue();
// Some more code
}
返回true时才需要执行return HasErrorsButReturnsOnlyIfTrue();
。否则会被跳过。
是否有可能在不使用HasErrors()
的情况下实现类似的目标?
答案 0 :(得分:3)
这可能是你最接近的:
public bool MyMethod()
{
return HasErrors()
? true
: SomeMoreCode();
}
请注意,这意味着您必须提供更多代码'在一个单独的方法中,该方法现在还必须返回一个布尔值。
答案 1 :(得分:0)
免责声明:这只是一个笑话。
public bool MyMethod()
{
try
{
return HasErrorsButReturnsOnlyIfTrue();
}
catch
{
// Some more code
Console.WriteLine("Test");
return false;
}
}
public bool HasErrorsButReturnsOnlyIfTrue()
{
if (some condition)
return true;
else
throw new Exception();
}
答案 2 :(得分:0)
制作一个nullable function。
void bool? isBar()
{
SomeObj someObj = check(); // Returns someObj;
if (someObj == null)
return false; // Nothing there
else if (someObj.something == 1)
return null; // It's there! Don't return!
else
return true; // Something's there, but not what we want
}
void doSth()
{
bool? isValid = isBar();
if (isValid != null)
return (bool)isValid;
}
或者,可以通过构造指示是否返回的结构或类来完成此操作。
struct Validator
{
public bool ShouldReturn;
public bool ReturnBool; // Could skip this and just make ShouldReturn nullable like the above example
public string ErrMsg;
}