为什么我的未初始化变量在TryParse中设置了值后又会再次取消赋值?

布拉德利

变量inputBool在while循环外声明,然后在尝试将userInput解析为布尔值时在while循环内设置。但是,一旦退出while循环,inputBool便会再次变为未声明!

但是,如果我使用值(EG false)初始化inputBool变量,它将在while循环内进行设置,然后即使在退出while循环后,也将保持设置为TryParse内部分配的任何值。

这是我想要的行为,但是当我不立即初始化变量时为什么不起作用?

        foreach (string question in questions)
        {
            bool isBool = false;
            // inputBool declared here.
            bool inputBool;
            string userInput;

            while (!isBool)
            {
                Console.WriteLine(question);
                userInput = Console.ReadLine();

                // inputBool gets assigned a value here in the TryParse.
                isBool = Boolean.TryParse(userInput, out inputBool);
                if (!isBool) Console.WriteLine("Please respond with 'true' or 'false'.");
            }

            // inputBool is unassigned here!
            answers[askingIndex] = inputBool;
            askingIndex++;
        }
艾蒂安·德·马特尔

从流分析的角度来看,不能保证while循环至少执行一次。当然,您会另外知道,因为您的条件涉及一个bool初始化为的值的变量false,但是编译器不够聪明,无法实现它。

因此,如果它至少执行一次,inputBool则最后仍将被统一化,从而产生错误。

您需要确保在所有代码路径中初始化变量有两个可能的修复:

  1. 将更while改为do...while确保至少执行一次,以确保变量被初始化。
  2. 将变量初始化为合理的默认值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我收到“未初始化的变量”错误

来自分类Dev

为什么我的变量没有初始化值?

来自分类Dev

为什么我的值未由初始化(参数化)构造函数初始化?

来自分类Dev

为什么我无法在jQuery中初始化变量?

来自分类Dev

为什么我不能在SwiftUI初始化中为@State var赋值?

来自分类Dev

为什么零初始化不是c ++中未初始化变量的默认值?有编译器选项可以强制执行吗?

来自分类Dev

在 Perl 中,将变量设置为正则表达式,我收到未初始化值警告

来自分类Java

为什么我不能检查未初始化变量是否为null

来自分类Dev

为什么我的未初始化变量有效?

来自分类Dev

为什么我的全局extern lambda变量在运行时未初始化?

来自分类Dev

为什么Pytorch中未初始化的张量具有初始值?

来自分类Dev

为什么未初始化的变量不打印垃圾值?

来自分类Java

为什么Javac抱怨未初始化变量?

来自分类Dev

为什么未初始化的constexpr变量不是常量?

来自分类Dev

为什么GCC不报告未初始化的变量?

来自分类Dev

为什么int.TryParse无法初始化多个变量

来自分类Dev

为什么有必要在 C 中对变量执行任何赋值之前对其进行初始化?

来自分类Dev

为什么在用户为其分配值之前,我需要初始化该变量?

来自分类Dev

为什么在此BEGIN中未正确初始化变量?

来自分类Dev

为什么我的变量没有初始化?

来自分类Dev

为什么在Ruby中未初始化的实例变量返回nil,但是未初始化的类变量引发错误?

来自分类Dev

C ++中未初始化变量的默认值是什么?

来自分类Dev

为什么/何时在Swift中为EnvironmentObjects允许使用未初始化的非可选值?

来自分类Java

为什么对赋值表达式[String x =(x = y)]的变量初始化进行编译?

来自分类Dev

C ++中未初始化变量的值

来自分类Java

为什么我们不能用从类型变量未初始化的局部变量访问静态内容?

来自分类Dev

为什么我的全局变量没有在Test :: Class中初始化?

来自分类Linux

为什么我需要在TensorFlow中初始化变量?

来自分类Dev

为什么我的变量没有在此代码中初始化?

Related 相关文章

  1. 1

    为什么我收到“未初始化的变量”错误

  2. 2

    为什么我的变量没有初始化值?

  3. 3

    为什么我的值未由初始化(参数化)构造函数初始化?

  4. 4

    为什么我无法在jQuery中初始化变量?

  5. 5

    为什么我不能在SwiftUI初始化中为@State var赋值?

  6. 6

    为什么零初始化不是c ++中未初始化变量的默认值?有编译器选项可以强制执行吗?

  7. 7

    在 Perl 中,将变量设置为正则表达式,我收到未初始化值警告

  8. 8

    为什么我不能检查未初始化变量是否为null

  9. 9

    为什么我的未初始化变量有效?

  10. 10

    为什么我的全局extern lambda变量在运行时未初始化?

  11. 11

    为什么Pytorch中未初始化的张量具有初始值?

  12. 12

    为什么未初始化的变量不打印垃圾值?

  13. 13

    为什么Javac抱怨未初始化变量?

  14. 14

    为什么未初始化的constexpr变量不是常量?

  15. 15

    为什么GCC不报告未初始化的变量?

  16. 16

    为什么int.TryParse无法初始化多个变量

  17. 17

    为什么有必要在 C 中对变量执行任何赋值之前对其进行初始化?

  18. 18

    为什么在用户为其分配值之前,我需要初始化该变量?

  19. 19

    为什么在此BEGIN中未正确初始化变量?

  20. 20

    为什么我的变量没有初始化?

  21. 21

    为什么在Ruby中未初始化的实例变量返回nil,但是未初始化的类变量引发错误?

  22. 22

    C ++中未初始化变量的默认值是什么?

  23. 23

    为什么/何时在Swift中为EnvironmentObjects允许使用未初始化的非可选值?

  24. 24

    为什么对赋值表达式[String x =(x = y)]的变量初始化进行编译?

  25. 25

    C ++中未初始化变量的值

  26. 26

    为什么我们不能用从类型变量未初始化的局部变量访问静态内容?

  27. 27

    为什么我的全局变量没有在Test :: Class中初始化?

  28. 28

    为什么我需要在TensorFlow中初始化变量?

  29. 29

    为什么我的变量没有在此代码中初始化?

热门标签

归档