C#警告:"变量已分配,但其值从未使用过"

时间:2016-02-10 19:34:00

标签: c# visual-studio variables while-loop compiler-warnings

我是第一次学习C#,我刚开始编写我的第一个程序。我目前在我的一个while循环中遇到了障碍。通常情况下,我发现在循环之外我的变量就像它们应该的那样工作,但出于某种原因,Visual Studio正在给我一个警告,说明"变量' itemPrice'已分配但其值永远不会被使用。"

我怎样才能得到警告,避免任何不良行为?

using System;

class Program
{
    public static void Main()
    {

        // "whoa" <-- string literal
        // 43 <-- int literal
        // 43.34 <-- double literal
        // false <-- bool literal
        // 43.4f <-- float literal
        // 43f <-- float literal
        // 43m <-- decimal literal

        bool hasEnteredMoney = false;
        decimal money = 0;
        int menuSelection;
        decimal itemPrice;
        bool isValidItem;
        string itemName;

        while (!hasEnteredMoney)
        {
            Console.Write("Please enter how much money you have: ");
            hasEnteredMoney = decimal.TryParse(Console.ReadLine(), out money);

            if (!hasEnteredMoney)
            {
                Console.WriteLine("Please enter a valid decimal value.");
            }
        }

        while (money >= 3)
        {
            Console.WriteLine("You have $" + money + " left.");
            Console.WriteLine("Please enter your selection:");
            Console.WriteLine("[0] - Poke Ball - $200");
            Console.WriteLine("[1] - Great Ball - $700");
            Console.WriteLine("[2] - Ultra Ball - $1200");
            Console.WriteLine("[3] - Potion - $300");
            Console.WriteLine("[4] - Antidote - $100");
            Console.WriteLine("[5] - Clear Mail - $50");
            Console.WriteLine(": ");

            if (int.TryParse(Console.ReadLine(), out menuSelection))
            {

                isValidItem = false;

                if (menuSelection == 0)
                {
                    itemPrice = 200;
                    itemName = "Poke Ball";
                    isValidItem = true;
                }

                if (menuSelection == 1)
                {
                    itemPrice = 700;
                    itemName = "Great Ball";
                    isValidItem = true;
                }

                if (menuSelection == 2)
                {
                    itemPrice = 1200;
                    itemName = "Ultra Ball";
                    isValidItem = true;
                }

                if (menuSelection == 3)
                {
                    itemPrice = 300;
                    itemName = "Potion";
                    isValidItem = true;
                }

                if (menuSelection == 4)
                {
                    itemPrice = 100;
                    itemName = "Antidote";
                    isValidItem = true;
                }

                if (menuSelection == 5)
                {
                    itemPrice = 50;
                    itemName = "Clear Mail";
                    isValidItem = true;
                }
            }
            else
            {
                Console.WriteLine("Invalid input.");
            }

        }

        Console.WriteLine("... you ran out of money :(");

        Console.ReadKey();

    }
}

3 个答案:

答案 0 :(得分:1)

变量itemPrice, isValidItem, itemName正在设置(分配给),但变量在程序中稍后不会用于其他目的。

编译器警告您,虽然您正在设置itemPrice, isValidItemitemName,但设置这些变量在程序中没有做任何事情 - E.G.当程序执行时,变量不会对程序的运行产生任何影响。

答案 1 :(得分:0)

它给你这个错误,因为你的变量永远不会在代码中使用。

itemPrice = 200;
itemName = "Poke Ball";
isValidItem = true;

因此,visual studio intellisense基本上是这样说的:你把所有这些值都放在变量中,但是从来没有使用过任何一个值。

如果您在代码末尾Console.WriteLine(itemName);,那么警告应该在您循环中的所有itemName中消失。

tl;博士你set;他们但从不get;他们

答案 2 :(得分:0)

警告是一个很好的迹象,表明您应该对该值实际执行某些操作。在你的情况下,我认为你会想做像

这样的事情
money -= itemPrice;

首先,它将摆脱警告。

其次,它会使while循环无限期地运行:)