可为空的短和数组
本文关键字:数组 | 更新日期: 2023-09-27 17:57:24
我目前得到这样的东西
public string MyFunction()
{
return MyFunction(null);
}
public string MyFunction(short? variable)
{
do something if null
else do something else
return string;
}
现在我正在尝试制作类似的东西
public string MyFunction(short[] variable)
{
string a;
foreach(var z in variable)
a = a +" "+ MyFunction(z);
}
但我收到错误
以下方法或属性之间的调用不明确
甚至可能只使用一个参数,因为我知道带有两个参数的 makin' 函数可以解决问题,但我仍然只会使用一个参数。也不可能用选定的数字替换 null(例如 0)。
您可以使用强制转换来解决歧义:
return MyFunction((short?)null);
如果没有强制转换,编译器就无法检测要调用哪个函数。
快速想法:为什么不使用可变长度参数组合它们?这样,您可以在这两种情况下调用相同的方法,并让它为数组中的项递归调用自身:
public string MyFunction(params short[] variables)
{
// edit: Added null-handling:
if (variables == null)
{
return "<empty>";
}
string myString = string.Empty;
if (variables.Length == 1)
{
// logic to handle the single variable
return myString + variables[0];
}
else
{
foreach (var z in variables)
{
myString += " " + MyFunction(z);
}
}
return myString;
}
传入版本的示例:多个short
值和一个数组。两者都工作正常:
class Program
{
static void Main(string[] args)
{
var instance = new ClassContainingTheMethod();
var res1 = instance.MyFunction(1, 2, 3);
var res2 = instance.MyFunction(new short[]{4, 5, 6});
Console.WriteLine(res1);
Console.WriteLine(res2);
Console.ReadKey();
}
}