文件名称:签名和重载-大彩串口屏各组态控件详细介绍
文件大小:4.46MB
文件格式:PDF
更新时间:2024-06-28 03:33:27
C#5.0 PDF C#学习
3.6 签名和重载 方法、实例构造函数、索引器和运算符是由它们的签名 (signature) 来刻画的: 方法签名由方法的名称、类型形参的个数和它的每一个形参的类型和形参传递模式(值、引用或输 出)组成(按从左到右的顺序)。为了实现这些目的,形参的类型中出现的方法的任何类型形参都 不是由其名称标识的,而是由它在方法的类型实参列表中的序号位置标识的。需注意的是,方法签 名既不包含返回类型和 params 修饰符(它可用于指定最右边的形参),也不包含可选类型形参约 束。 实例构造函数签名由它的每一个形参的类型和形参传递模式(值、引用或输出)组成(按从左到右 的顺序)。具体而言,实例构造函数的签名不包含可为最右边的参数指定的 params 修饰符。 索引器签名由它的每一个形参的类型组成(按从左到右的顺序)。具体而言,索引器签名既不包含 元素类型,也不包含可为最右边的形参指定的 params 形参数组签名和 修饰符。 运算符签名由运算符的名称和它的每一个形参的类型组成(按从左到右的顺序)。具体而言,运算 符的签名不包含结果类型。 如果同一成员类型的两个签名具有相同的名称、类型形参的个数和形参传递模式,并且其对应的类型之 间存在标识转换,则会将这两个签名视为同一签名(第 6.1.1 节)。 签名是对类、结构和接口的成员实施重载 (overloading) 的机制: 方法重载允许类、结构或接口用同一个名称声明多个方法,条件是它们的签名在该类、结构或接口 中是唯一的。 实例构造函数重载允许类或结构声明多个实例构造函数,条件是它们的签名在该类或结构中是唯一 的。 索引器重载允许类、结构或接口声明多个索引器,条件是它们的签名在该类、结构或接口中是唯一 的。 运算符重载允许类或结构用同一名称声明多个运算符,条件是它们的签名在该类或结构中是唯一的。 虽然 out 和 ref 参数修饰符被视为签名的一部分,但是在同一个类型中声明的成员不能仅通过 ref 和 out 在签名上加以区分。在同一类型中声明了两个成员时,如果将这两个方法中带有 out 修饰符的所有 形参更改为 ref 修饰符会使这两个成员的签名相同,则会发生编译时错误。出于签名匹配的其他目的 (如隐藏或重写),ref 和 out 被视为签名的组成部分,并且互不匹配。(此限制使 C# 程序能够方便 地进行转换,以便能在公共语言基础结构 (CLI) 上运行,CLI 并未提供任何方式来定义仅通过 ref 和 out 就能加以区分的方法。) 下面的示例演示一组重载方法声明及其签名。 interface ITest { void F(); // F() void F(int x); // F(int) void F(ref int x); // F(ref int) void F(out int x); // F(out int) error void F(int x, int y); // F(int, int) int F(string s); // F(string)