可为空的短和数组

本文关键字:数组 | 更新日期: 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();
    }
}