C# 初学者 - "Use of Unassigned Local Variable" 问题
C# Beginner - "Use of Unassigned Local Variable" Issue
C# 新手(到目前为止只写了一周代码)尝试创建一个练习程序。似乎无法获取我想要存储在 'price1' 和 'price2' 中的数据。错误是 CS0165 Use of unassigned local variable 'price1' and 'price2'.
我试过移动代码行并添加 return 命令,但我似乎不太明白。
Console.Write("What grocery are you buying: ");
string product1 = Console.ReadLine();
Console.Write("How many are you buying: ");
int quantity1 = Convert.ToInt32(Console.ReadLine());
double price1;
if (product1 == "Steak")
{
price1 = Convert.ToDouble(steak.price * quantity1);
}
if (product1 == "Cheerios")
{
price1 = Convert.ToDouble(cheerios.price * quantity1);
}
if (product1 == "Pepsi")
{
price1 = Convert.ToDouble(pepsi.price * quantity1);
}
if (product1 == "Celeste Pizza")
{
price1 = Convert.ToDouble(celeste.price * quantity1);
}
Console.Write("What second grocery are you buying: ");
string product2 = Console.ReadLine();
Console.Write("How many are you buying: ");
int quantity2 = Convert.ToInt32(Console.ReadLine());
double price2;
if (product2 == "Steak")
{
price2 = Convert.ToDouble(steak.price * quantity2);
}
if (product1 == "Cheerios")
{
price2 = Convert.ToDouble(cheerios.price * quantity2);
}
if (product1 == "Pepsi")
{
price2 = Convert.ToDouble(pepsi.price * quantity2);
}
if (product1 == "Celeste Pizza")
{
price2 = Convert.ToDouble(celeste.price * quantity2);
}
Console.WriteLine(price1 + price2);
正在尝试获取存储在 'price1' 和 'price2' 中的数据,以便我可以在最后将它们加在一起。对不起,如果我在这里有任何术语错误。
问题是,如果 product1
不等于您的 if
语句中的任何值,那么这些部分的 none 将永远 运行,等等理论上存在 price1
可能永远不会被赋值的危险。而且它不能使用没有价值的东西来将它添加到其他东西中。这就是编译器所抱怨的。您需要在首次声明时给 price1
一个默认值,作为备用选项,以防用户输入的内容不是四个预期产品名称之一。
double price1 = 0;
对于这种情况可能没问题,但您可以选择您认为最好的任何值,只要存在某种值即可。
您也会遇到与 price2
完全相同的问题。
需要将 "local variables" price1 和 price2 初始化为您选择的默认值,可能是 0。
基本上,当您决定获取它们的总和并显示它时,不能保证价格 1 或价格 2 会被设置为任何值。
C# 新手(到目前为止只写了一周代码)尝试创建一个练习程序。似乎无法获取我想要存储在 'price1' 和 'price2' 中的数据。错误是 CS0165 Use of unassigned local variable 'price1' and 'price2'.
我试过移动代码行并添加 return 命令,但我似乎不太明白。
Console.Write("What grocery are you buying: ");
string product1 = Console.ReadLine();
Console.Write("How many are you buying: ");
int quantity1 = Convert.ToInt32(Console.ReadLine());
double price1;
if (product1 == "Steak")
{
price1 = Convert.ToDouble(steak.price * quantity1);
}
if (product1 == "Cheerios")
{
price1 = Convert.ToDouble(cheerios.price * quantity1);
}
if (product1 == "Pepsi")
{
price1 = Convert.ToDouble(pepsi.price * quantity1);
}
if (product1 == "Celeste Pizza")
{
price1 = Convert.ToDouble(celeste.price * quantity1);
}
Console.Write("What second grocery are you buying: ");
string product2 = Console.ReadLine();
Console.Write("How many are you buying: ");
int quantity2 = Convert.ToInt32(Console.ReadLine());
double price2;
if (product2 == "Steak")
{
price2 = Convert.ToDouble(steak.price * quantity2);
}
if (product1 == "Cheerios")
{
price2 = Convert.ToDouble(cheerios.price * quantity2);
}
if (product1 == "Pepsi")
{
price2 = Convert.ToDouble(pepsi.price * quantity2);
}
if (product1 == "Celeste Pizza")
{
price2 = Convert.ToDouble(celeste.price * quantity2);
}
Console.WriteLine(price1 + price2);
正在尝试获取存储在 'price1' 和 'price2' 中的数据,以便我可以在最后将它们加在一起。对不起,如果我在这里有任何术语错误。
问题是,如果 product1
不等于您的 if
语句中的任何值,那么这些部分的 none 将永远 运行,等等理论上存在 price1
可能永远不会被赋值的危险。而且它不能使用没有价值的东西来将它添加到其他东西中。这就是编译器所抱怨的。您需要在首次声明时给 price1
一个默认值,作为备用选项,以防用户输入的内容不是四个预期产品名称之一。
double price1 = 0;
对于这种情况可能没问题,但您可以选择您认为最好的任何值,只要存在某种值即可。
您也会遇到与 price2
完全相同的问题。
需要将 "local variables" price1 和 price2 初始化为您选择的默认值,可能是 0。
基本上,当您决定获取它们的总和并显示它时,不能保证价格 1 或价格 2 会被设置为任何值。