对于我的任务,我只是更新cs文件中的现有功能,还有一个新标志来监控发送邮件功能。 当前功能是,
public static string EditDetails(AccountDetails Account, string[] existingAccount)
{
// some code goes here
var enableNewWelcomeMail = true; // control not getting here..
var isAccountUpdated = true;
var isMailSent = true;
if (Account.ContractType == ContractType.Licensed) // even though condition true value is not assigned to false
{
enableNewWelcomeMail = false;
}
// remaining code goes here
}
添加新标志变量后,我清理了项目并构建了它。即使是现在控件也只是跳过变量声明。在清理和构建项目时,我注意到一条警告消息
警告CS0219:已分配变量'enableNewWelcomeMail',但从未使用其值
对于其他一些变量,我也看到了这个警告信息,但这些只是正常工作。 任何关于此的建议都会非常有用。
答案 0 :(得分:2)
首先,警告意味着它所说的内容。它是静态代码分析的一部分,可以通过两种方式帮助您进行编码:
您为从未使用过的变量赋值。请看以下示例:
var valueUnused = false;
valueUnused = true;
valueUnused = false;
您会看到三个分配,但在覆盖之前不会使用其中的两个值。如果您在某处使用带有if (valueUnused)
块的值,则警告将消失。你甚至可以这样做:
var valueUnused = false;
valueUnused = !valueUnused;
valueUnused = !valueUnused;
对于控制流程,我的猜测是你正在为Release构建,优化器会出于上述原因为你删除所有这些代码。
答案 1 :(得分:1)
首先,当编译器发现对变量的第二次赋值总是覆盖第一次赋值(通过静态代码分析)时,抛出这种类型的警告。
这意味着你的if语句总是正确的。
这就是你警告的原因。这并不意味着你的想法。
if (Account.ContractType == ContractType.Licensed)
// your if-condition is always true, that is why this warning is displayed
{
enableNewWelcomeMail = false;
}
enableNewWelcomeMail将始终为false,例如if-condition。这就是警告澄清的内容。