C# 控制流未进入变量声明
对于我的任务,我只是更新cs文件中的现有功能,使用一个新的标志来监视发送邮件功能。 目前的功能是C# 控制流未进入变量声明,c#,variables,declaration,C#,Variables,Declaration,对于我的任务,我只是更新cs文件中的现有功能,使用一个新的标志来监视发送邮件功能。 目前的功能是 public static string EditDetails(AccountDetails Account, string[] existingAccount) { // some code goes here var enableNewWelcomeMail = true; // control not getting here.. var isAccountUpda
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
}
在添加新的flag变量之后,我已经清理了项目并构建了它。即使现在,控件也只是跳过变量声明。在清洁和建设项目的过程中,我注意到一条警告信息如下:
警告CS0219:已分配变量“enableNewWelcomeMail”,但从未使用其值
对于其他一些变量,我也看到了这条警告信息,但这些变量只能正常工作。
关于这一点的任何建议都会非常有用。首先,当编译器发现变量的第二个赋值总是覆盖第一个赋值的值时(通过静态代码分析),会抛出此类警告 这意味着您的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;
您会看到三个赋值,但其中两个值在被覆盖之前未被使用。如果将该值与If(valueUnused)
块一起使用,则警告将消失。你甚至可以这样做:
var valueUnused = false;
valueUnused = !valueUnused;
valueUnused = !valueUnused;
对于控制流,我的猜测是您正在为发布而构建,而优化器出于上述原因为您删除了所有这些代码。ExistingAccount在哪里声明?顺便说一句,应该是现有帐户。如果代码没有到达您的变量声明,那么它可能正在退出或在您标记为“此处有代码”的部分中出现异常。什么是
ExistingAccout
here?现有帐户,这意味着已获得许可的帐户。您能否显示//此处有一些代码
?在显示的代码段中,警告是正确的,并可能解释了问题:enableNewWelcomeMail
已设置但从未读取-即设置它没有意义,因为您从未在任何地方使用它。。。enableNewWelcomeMail
是您添加的新标志吗?