通过2个Attribute让老C#代码支持可选参数。

C#是从 C# 4.0(随着 .NET Framework 4和VS 2010)开始支持可选参数的。具体来说,就是可以用C#写如下的代码:

1
2
3
4
public int Add(int a, int b = 5)
{
return a + b;
}

在这之前,通常是使用方法重载来达到相同目的:

1
2
3
4
5
6
7
8
9
public int Add(int a, int b)
{
return a + b;
}

public int Add (int a)
{
return Add(a, 5);
}

实际上,我们完全可以通过2个Attribute来达到可选参数的目的。这2个Attribute存在于System.Runtime.InteropServices命名空间,分别为:

  • OptionalAttribute
  • DefaultParameterValueAttribute

代码看起来是这样:

1
2
3
4
public int Add(int a, [Optional][DefaultParameterValue(5)]int b)
{
return a + b;
}

这2个Attribute自 .NET Framework 1.1时代就有了,惭愧我现在才知道……

留言

2016-10-09