使用未分配的局部变量'flag'

时间:2010-08-02 04:14:25

标签: c#

无法弄清楚为什么我在标志上收到错误。任何帮助将不胜感激! 目标是使用以下指定的字符生成40个字符。

public static string udidGen()         {

        bool flag;
        string s1 = "";
        string[] sArr2 = new string[] {
                                        "0", 
                                        "1", 
                                        "2", 
                                        "3", 
                                        "4", 
                                        "5", 
                                        "6", 
                                        "7", 
                                        "8", 
                                        "9", 
                                        "a", 
                                        "b", 
                                        "c", 
                                        "d", 
                                        "e", 
                                        "f" };
        string[] sArr1 = sArr2;
        Random random = new Random();
        int i = 0;

        while (**flag**)
        {
            s1 += sArr1[random.Next(0, 15)];
            i++;
            flag = i < 40;
        }
        return s1;
    }

3 个答案:

答案 0 :(得分:2)

您正在使用标记而不为其赋值。将第一行更改为:

bool flag = true;

更好的是,完全摆脱'flag'并用for循环替换while循环

for(int i = 0; i&lt; 40; i ++) { ... }

答案 1 :(得分:0)

while第一次执行,flag从未被设置为任何东西 - 感谢编译器/运行时指出你本来可以证明是非常困难的抓到虫子!

你应该在循环之前将变量初始化为true,理想情况是在声明本身中:

bool flag = true;

答案 2 :(得分:0)

flag变量尚未初始化,C#编译器不允许这样做。在这种情况下,你想让它成为真,所以你至少进入一次循环。

bool flag = true;