c# - 如何避免使用永远不会发生的未分配变量?
问题描述
在下面的代码中,编译器在返回行的“intValue”上给出了“使用未分配的局部变量”。但是,不会出现“intValue > 500”将被取消分配的情况(因为如果intValue
未分配,valueIsInt
则为 false,并且该语句在达到之前返回 false intValue
)
有没有办法在不修改代码逻辑或业务逻辑的情况下解决这个问题?这是一个非常简化的例子;在intValue
另一种类型且条件intValue > 500
更复杂的情况下,我们不能简单地在else
块中给 intValue 一个值,例如intValue = 0
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;
}
}
推荐阅读
- python - 在 Linux Mint 和 Spyder 上使用不同的 Anaconda 环境
- php - Laravel Sanctum/React on LAMP Stack - 未经身份验证但存在 x-xsrf-token
- php - 从没有数据库表的数组创建对象?
- jquery - 使用 jQuery 将 ASP.NET Core MVC ViewBag 从控制器返回到视图中
- r - 在 r shiny 中对反应性数据框进行多重回归的最佳方法是什么?
- python - 为什么我不能在这个函数中使用列表推导?
- java - 无法解析 android 清单中的符号“@style/AppTheme”
- javascript - Nuxt.js SSR 与 firebase - ReferenceError: navigator is not defined
- javascript - 使用导出调用函数内部的函数
- json - 我可以使用 Json 构建模板并将其集成到我的应用程序中以使 Slackbot 更美观吗?