调用两种方法重载方法的标准?

时间:2012-06-06 00:26:22

标签: c# overloading

我已经在C#规范中看到了在调用中使用了重载方法的规则,但我似乎无法找到任何关于实际成为重载方法的方法需要满足的条件。

这是我的镜头。如果您发现任何问题,请告诉我:

这不考虑访问修饰符或泛型(我仍然是一个菜鸟通过C#书工作)

考虑两种方法

  • 确保两种方法都有正确的形式参数列表
  • 将可选参数视为必需参数
  • 将params视为一个必需参数,其类型是params数组的类型
  • 我们有两个强制性参数列表
  • (P1,P2,P3,P4)和(Q1,Q2,Q3,Q4)
  • P1和Q1,P2和Q2,......是参数对
  • 要重载方法,两者必须具有相同的名称但不同的参数列表

其中一个必须是假的

  • 相同数量的参数
  • 每个参数对必须具有相同的类型
  • 每个参数对都必须具有参数修饰符或两者都没有参数修饰符。

示例:方法(ref int a)和方法(out int a)不是重载方法

  • 两个参数
  • 两者都是int
  • 两者都有参数修饰符

1 个答案:

答案 0 :(得分:2)

通常“方法重载”是指具有相同名称(包括+/-运算符)但具有不同参数的方法。

术语“重载”并未严格定义为C#语言中的任何特定内容(与“方法签名”不同)。定义的关闭位置可能是C#4.0规范的“3.6签名和重载”部分:

  

签名是类,结构和接口中重载成员的启用机制:

     
      
  • 重载方法允许类,结构或接口声明具有相同名称的多个方法,前提是它们的签名在该类,结构或接口中是唯一的。

  •   
  • 实例构造函数的重载允许类或结构声明多个实例构造函数,前提是它们的签名在该类或结构中是唯一的。

  •   
  • 重载索引器允许类,结构或接口声明多个索引器,前提是它们的签名在该类,结构或接口中是唯一的。

  •   
  • 运算符的重载允许类或结构声明具有相同名称的多个运算符,前提是它们的签名在该类或结构中是唯一的。

  •