为什么在C#中只将可选参数编​​译成等效的重载?

时间:2012-01-15 00:04:40

标签: .net c#-4.0

  

可能重复:
  method overloading vs optional parameter in C# 4.0

似乎可以通过使可选参数简单地转换为重载来解决大多数可选项如版本问题。是否有技术原因C#可选参数没有以减少过载的方式实现?

1 个答案:

答案 0 :(得分:2)

一个原因是,如果编译器自动将可选参数编​​译到重载中,那么它将与开发人员自己定义它们的能力相冲突。例如,以下代码是合法的。

class Container {

  public void Example(int x) {
    ...
  }

  public void Example(int x, int y = 42) {
    ...
  }
}