创建具有多个输出的方法
本文关键字:输出 方法 创建 | 更新日期: 2023-09-27 18:31:39
我只是无法让这种方法工作,我不知道为什么。
视觉对象给我的错误是:
错误 1 名为"laborCost"的局部变量不能在此作用域中声明,因为它会给"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");
}
}
}
删除方法顶部的变量声明(它们在方法定义中声明):
laborCost = 0m;
partsCost = 0m;
您基本上是在作用域中声明一个具有相同名称的新变量。如果编写以下内容,则会发生相同的错误:
int i = 10;
int i = 40;
可以有多个out
参数,但不能声明与作用域内的另一个变量同名的变量。
因此,如果您有一个带有名为 laborCost
的参数的方法,则不能也定义具有该名称的变量,因为这会冲突。因此,为您的变量或参数指定另一个名称,您将没事的。
删除方法中的变量声明。意味着,从您的代码中删除以下内容;
decimal laborCost = 0m;
decimal partsCost = 0m;
不能声明已声明为方法参数的同名变量。不过,您可以按如下方式分配值。
laborCost = 0m;
partsCost = 0m;
此外,我认为如果您按如下方式更改 TryParse 会很方便; 因为当结果(十进制。TryParse)是真的。
if (!string.IsNullOrEmpty(partsTextBox.Text))
{
if(!decimal.TryParse(partsTextBox.Text, out partsCost))
{
MessageBox.Show("Invalid input for parts");
}
}
参数和本地值具有相同的名称。
使用以下代码,
//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");
}
}
}
您需要将参数列表中的 laborCost 声明更改为其他名称,或者您需要删除声明部分,并使其成为纯粹的赋值,
类似的东西
laborCost = 0m;
partsCost = 0m;
没有前面的十进制类型声明。