相关疑难解决方法(0)

如何在C#中使用可选参数?

注意:当C#尚未支持可选参数时(即在C#4之前),就会询问此问题.

我们正在构建一个通过C#类以编程方式生成的Web API.该类有方法GetFooBar(int a, int b),API有一个GetFooBar接受查询参数的方法&a=foo &b=bar.

这些类需要支持可选参数,C#语言不支持这些参数.什么是最好的方法?

c# optional-parameters

459
推荐指数
10
解决办法
60万
查看次数

如何在c#7元组中指定方法参数的默认值?

在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种可能的选择:

  1. 老式的方法:重载方法,在方法体中提供默认值.缺点:如果你有超过2个元组,重载会变得很麻烦.
  2. 使用可空元组,在方法体中提供默认值.
  3. 使用元组的默认值
  4. 使用params数组在方法的参数中允许超过2个元组,在方法体中提供默认值

注意: …

.net c# parameters default c#-7.0

9
推荐指数
2
解决办法
2209
查看次数

标签 统计

c# ×2

.net ×1

c#-7.0 ×1

default ×1

optional-parameters ×1

parameters ×1