Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制流未进入变量声明_C#_Variables_Declaration - Fatal编程技术网

C# 控制流未进入变量声明

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

对于我的任务,我只是更新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
}
在添加新的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
    是您添加的新标志吗?