C#错误:使用未分配的局部变量

前端之家收集整理的这篇文章主要介绍了C#错误:使用未分配的局部变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
错误是在for循环中引起的:
for (i = 0; i < hand.Length; i++)
{
   Console.WriteLine(hand[i]);
}

我试图存储值,以便以后显示它们.写作线可以帮助我确保代码实际上按照我的意图运行.

其余代码供参考:
*编辑:添加了一行代码

enum house //variable type for the card type
{
    Spades,Hearts,Clubs,Diamonds
}

enum cards //variable type for the cards
{
    Joker,Ace,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten,Jack,Queen,King
}

class Program
{
    static void Main(string[] args)
    {

        Random rnd;
        Random rnd2;

        int i;
        int random;
        int random2;

        String[] hand;

        house randomhouse;
        cards randomcard;

        //all declared variables

        Console.WriteLine("Your hand is made up of :");

        for (i = 0; i <= 6; i++)//does everything in the {} until i is equal to 6
        {

            rnd2 = new Random();
            random2 = rnd2.Next(0,14);
            randomcard = (cards)random2; //selecting a random card from joker to king

            if (randomcard > (int)cards.Joker) //if the random card isn't a joker
            {
                rnd = new Random();
                random = rnd.Next(0,4);
                randomhouse = (house)random;//selects a random card type

                Console.WriteLine(randomcard + " of " + randomhouse); //outputs the name of the card
                System.Threading.Thread.Sleep(1000);//wait 1 second before getting the new card
            }

            else
            {
                Console.WriteLine(randomcard);//outputs "Joker"
                System.Threading.Thread.Sleep(1000);//wait 1 second before getting the new card
            }

            hand = new String[i];//making a new array value for every loop
            hand[i] = randomcard.ToString();//adding randomcard to the array*

        } 

        Console.Clear();

        for (i = 0; i < hand.Length; i++)
        {
            Console.WriteLine(hand[i]);
        }

        Console.ReadKey();
    }
}

解决方法

编译器永远无法确定手是否已实际初始化.您应该先将其初始化,或将其设置为null,以便绕过此编译器检查.

所以你可以这样做,但事实上这是不好的做法!更改代码时,最终可能会出现NullReferenceException!

String[] hand = null;

你知道你的代码实际上并不起作用,因为你最终会得到一个数组.我想你的意思是:

hand = new String[6];

...

hand[i] = theValue;

猜你在找的C#相关文章