0

我在 C# 规范规则中看到了在调用中使用重载方法的规则,但我似乎找不到任何关于需要满足哪些条件才能使方法实际上成为重载方法的任何内容。

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

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

考虑两种方法

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

其中之一必须是错误的

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

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

  • 两者 1 参数
  • 两者都是整数
  • 两者都有一个参数修饰符
4

1 回答 1

2

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

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

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

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

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

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

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

于 2012-06-06T00:58:13.323 回答