我是第一次学习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();
}
}
答案 0 :(得分:1)
变量itemPrice, isValidItem, itemName
正在设置(分配给),但变量在程序中稍后不会用于其他目的。
编译器警告您,虽然您正在设置itemPrice, isValidItem
和itemName
,但设置这些变量在程序中没有做任何事情 - 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循环无限期地运行:)