如何避免使用永远不会发生的未分配变量



在下面的代码中,编译器给出了一个"使用未分配的局部变量";在返回行的"intValue"上。然而,不存在这样的情况:;intValue>500〃;将到达未分配的位置(因为如果intValue未分配,则valueIsInt为false,并且该语句在到达intValue之前返回false(

是否有一种方法可以在不修改代码的逻辑业务逻辑

bool valueIsInt;
if (value is int intValue)
{
valueIsInt = true;
}
else
{
valueIsInt = false;
}
return valueIsInt && intValue > 500;

我想避免这种情况,以防else语句中的代码更复杂:

else
{
return false;
}

例如:

bool valueIsInt;
if (value is int intValue)
{
valueIsInt = true;
}
else
{
if (value is string stringValue)
valueIsInt = int.TryParse(stringValue, out intValue);
else
return false;
}
return valueIsInt && intValue > 500;

更新

static bool IsValueGreaterThan500(object value)
{
try
{
// Converts the value to int if it is not already an int
// from bool, short, float, double, string, etc.
return Convert.ToInt32(value) > 500;
}
catch
{
return false;
}
}

相关内容

  • 没有找到相关文章

最新更新