注意:当C#尚未支持可选参数时(即在C#4之前),就会询问此问题.
我们正在构建一个通过C#类以编程方式生成的Web API.该类有方法GetFooBar(int a, int b),API有一个GetFooBar接受查询参数的方法&a=foo &b=bar.
这些类需要支持可选参数,C#语言不支持这些参数.什么是最好的方法?
在C#中,您可以按此处所述定义默认参数.我正在使用元组和C#7(使用LinqPad beta),如下所示:
void Main()
{
var result=AddTuples((1,2), (3,4));
Console.WriteLine($"Result is: {result}");
}
(int x, int y) AddTuples((int x, int y) a, (int x, int y) b)
{
return (a.x+b.x, a.y+b.y);
}
Run Code Online (Sandbox Code Playgroud)
这很好,它显示了a和b的总和:
结果是:(4,6)
现在我试图修改AddTuples默认参数,但不知怎的,我无法弄清楚如何.我尝试过的是:
(int x, int y) AddTuples2((int x, int y) a = (0,0), (int x, int y) b=(0,0))
{
return (a.x + b.x, a.y + b.y);
}
Run Code Online (Sandbox Code Playgroud)
但我收到错误消息:
CS1736"a"的默认参数值必须是编译时常量
CS1736"b"的缺省参数值必须是编译时常量
我究竟做错了什么?
谢谢你提供了很好的答案,我学到了很多东西.让我总结一下:要获得元组参数的默认值,有3种可能的选择:
params数组在方法的参数中允许超过2个元组,在方法体中提供默认值注意: …