控制流未进入变量声明
Control flow not getting into variable declaration
对于我的任务,我只是更新了 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
}
添加新标志变量后,我清理了项目并构建了它。即使现在,控件也只是跳过变量声明。在清理和构建项目时,我注意到一条警告消息
warning CS0219: The variable 'enableNewWelcomeMail' is assigned but its value is never used
对于其他一些变量,我也看到了这条警告消息,但它们只是工作正常。
关于此的任何建议都会非常有帮助。
首先,当编译器发现对变量的第二次赋值总是覆盖第一次赋值的值(通过静态代码分析)时,会抛出此类警告。
这意味着您的 if 语句始终为真。
这就是你发出警告的原因。这并不代表你的想法。
if (Account.ContractType == ContractType.Licensed)
// your if-condition is always true, that is why this warning is displayed
{
enableNewWelcomeMail = false;
}
enableNewWelcomeMail 将始终为 false,这就是您的 if 条件。这就是警告所阐明的内容。
首先,警告的意思就是它所说的。它是静态代码分析的一部分,应该可以通过两种方式帮助您编码:
- 通过删除未使用的代码来优化和清理您的代码
- 发现错误。想象一下,您实际上想使用初始值但忘了这样做。在这种情况下,警告将指示出现问题。
您为从未使用过的变量赋值。看下面的例子:
var valueUnused = false;
valueUnused = true;
valueUnused = false;
您看到三个赋值,但其中 2 个值在被覆盖之前未被使用。如果您在某处使用带有 if (valueUnused)
块的值,警告将消失。你甚至可以这样做:
var valueUnused = false;
valueUnused = !valueUnused;
valueUnused = !valueUnused;
对于控制流,我的猜测是您正在为 Release 构建并且优化器出于上述原因为您删除了所有这些代码。
对于我的任务,我只是更新了 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
}
添加新标志变量后,我清理了项目并构建了它。即使现在,控件也只是跳过变量声明。在清理和构建项目时,我注意到一条警告消息
warning CS0219: The variable 'enableNewWelcomeMail' is assigned but its value is never used
对于其他一些变量,我也看到了这条警告消息,但它们只是工作正常。 关于此的任何建议都会非常有帮助。
首先,当编译器发现对变量的第二次赋值总是覆盖第一次赋值的值(通过静态代码分析)时,会抛出此类警告。
这意味着您的 if 语句始终为真。
这就是你发出警告的原因。这并不代表你的想法。
if (Account.ContractType == ContractType.Licensed)
// your if-condition is always true, that is why this warning is displayed
{
enableNewWelcomeMail = false;
}
enableNewWelcomeMail 将始终为 false,这就是您的 if 条件。这就是警告所阐明的内容。
首先,警告的意思就是它所说的。它是静态代码分析的一部分,应该可以通过两种方式帮助您编码:
- 通过删除未使用的代码来优化和清理您的代码
- 发现错误。想象一下,您实际上想使用初始值但忘了这样做。在这种情况下,警告将指示出现问题。
您为从未使用过的变量赋值。看下面的例子:
var valueUnused = false;
valueUnused = true;
valueUnused = false;
您看到三个赋值,但其中 2 个值在被覆盖之前未被使用。如果您在某处使用带有 if (valueUnused)
块的值,警告将消失。你甚至可以这样做:
var valueUnused = false;
valueUnused = !valueUnused;
valueUnused = !valueUnused;
对于控制流,我的猜测是您正在为 Release 构建并且优化器出于上述原因为您删除了所有这些代码。