我无法让这种方法起作用,我不知道为什么。
视觉给我的错误是:
错误1名为' laborCost'的局部变量不能在此范围内声明,因为它会对“劳动成本”赋予不同的含义,而劳动成本已经在父母或当前的“父母”中使用。范围来表示别的东西
这就是我想要的: 它似乎并不希望我在方法中使用与描述中相同的var,但该方法如何知道返回什么?
//adds together any other charges from partsLaborGroupBox this is an output method
private void OtherCharges(TextBox partsTextBox,TextBox laborTextBox, out decimal laborCost, out decimal partsCost)
{
decimal laborCost = 0m;
decimal partsCost = 0m;
//this chain goes through the partsLaborTextBox and checks to see if there is input, if so it gets the input
//if input is not valid it will display a message.
if (!string.IsNullOrEmpty(partsTextBox.Text))
{
if(decimal.TryParse(partsTextBox.Text, out partsCost))
{
//do nothing
}
else
{
MessageBox.Show("Invalid input for parts");
}
}
if (!string.IsNullOrEmpty(laborTextBox.Text))
{
if(decimal.TryParse(laborTextBox.Text, out laborCost))
{
//dont need to do anything.
}
else
{
MessageBox.Show("Invalid input for labor");
}
}
}
答案 0 :(得分:3)
删除方法顶部的变量声明(它们在方法定义中声明):
laborCost = 0m;
partsCost = 0m;
您基本上是在范围内声明一个名称相同的新变量。如果你写:
会发生同样的错误 int i = 10;
int i = 40;
答案 1 :(得分:1)
您可以拥有多个out
参数,但不能声明与范围内的另一个名称相同的变量。
因此,如果您有一个名为laborCost
的参数的方法,则不能使用该名称定义变量,因为这会发生冲突。所以给你的变量或你的参数另一个名字,你会没事的。
答案 2 :(得分:1)
删除方法内的变量声明。意味着,从代码中删除;
decimal laborCost = 0m;
decimal partsCost = 0m;
您不能声明具有已声明为方法参数的相同名称的变量。不过,您可以按如下方式指定值。
laborCost = 0m;
partsCost = 0m;
此外,我认为如果你改变下面的TryParse会很方便;因为当(decimal.TryParse)的结果为真时你不会做任何事情。
if (!string.IsNullOrEmpty(partsTextBox.Text))
{
if(!decimal.TryParse(partsTextBox.Text, out partsCost))
{
MessageBox.Show("Invalid input for parts");
}
}
答案 3 :(得分:0)
您的参数和本地值具有相同的名称。
使用以下代码,
//adds together any other charges from partsLaborGroupBox this is an output method
private void OtherCharges(TextBox partsTextBox,TextBox laborTextBox, out decimal laborCost, out decimal partsCost)
{
laborCost = 0m;
partsCost = 0m;
//this chain goes through the partsLaborTextBox and checks to see if there is input, if so it gets the input
//if input is not valid it will display a message.
if (!string.IsNullOrEmpty(partsTextBox.Text))
{
if(decimal.TryParse(partsTextBox.Text, out partsCost))
{
//do nothing
}
else
{
MessageBox.Show("Invalid input for parts");
}
}
if (!string.IsNullOrEmpty(laborTextBox.Text))
{
if(decimal.TryParse(laborTextBox.Text, out laborCost))
{
//dont need to do anything.
}
else
{
MessageBox.Show("Invalid input for labor");
}
}
}
答案 4 :(得分:0)
您需要更改参数列表中的laborCost声明或将方法更改为其他名称,或者您需要删除声明部分,并使其成为纯粹的赋值,
像
这样的东西laborCost = 0m;
partsCost = 0m;
不包含前面的十进制类型声明。