为了用一个简单的例子来解释这个问题,我们可以这样说:
我有一个方法,取两个数字的平均值:
private double TakeAverage(double n1,double n2)
{
average = (number1 + number2) / 2.0000;
return average;
}
我这样调用它:
textBox3.Text = (TakeAverage(number1, number2)).ToString();
第一季度:
如何使该函数能够运行而无需多次调用,例如:
TakeAverage(number1, number2, number3, number4, number5) // as wanted number of times...
问题2:如何让这个函数根据它所接受的值的数量改变返回值?
例如
Substring(1) //if it takes just one value, it returns all the chars after first char but
Substring(1,2)//if it takes two values, it returns 2 characters after first char
最佳答案
看看这个:
public double TakeAverage(params double[] numbers)
{
double result = 0.0;
if (numbers != null && numbers.Length > 0)
result = numbers.Average();
return result;
}
由于 params
允许客户端不发送任何内容,因此我们应该测试 numbers
是否存在并包含项目。
用法:
double average = TakeAverage(1, 2, 3, 4.4); //2.6
double anotherAverage = TakeAverage(); //0
double yetAnotherAverage = TakeAverage(null); //0
更新
根据您的评论,我了解到您正在寻找称为重载的东西:您希望给定方法根据其参数表现出不同的行为。
我举一个例子,你必须修改它以满足你的需要。
假设除了我们原来的 TakeAverage
方法之外,我们还需要另一个方法来计算平均值并将其乘以给定的数字。它会是这样的:
public double TakeAverage(int factor, params double[] numbers)
{
double result = 0.0;
if (numbers != null && numbers.Length > 0)
result = numbers.Average() * factor;
return result;
}
用法:
double average = TakeAverage(1.0, 2, 3, 4.4); //2.6
double notAnAverage = TakeAverage(1, 2, 3, 4.4); //3.1333...
请注意,我必须明确指出第一个数字是 double
(1.0
),否则它将落在第二个重载上并与其相乘。
关于c# - 如何创建一个获取未知数量值的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17322171/