C#规范将签名定义为不包含返回类型.CLI规范将其定义为包含返回类型.
虽然这种小差异是不幸的,但从背景中推断出意义的意图并不难.正如您引用的文本所示,当将方法与委托匹配时,返回类型是相关的; 在进行虚拟覆盖时,以及在许多其他情况下,它也是相关的.返回类型在重载解析期间不相关,重载解析是C#规范最关心方法"签名"的上下文.
根据C#语言规范的第3.6节,方法签名不包括返回类型(显式)或访问修饰符(省略):
方法的签名由方法的名称,类型参数的数量以及每个形式参数的类型和种类(值,引用或输出)组成,并按从左到右的顺序考虑。为此,以形式形参类型出现的方法的任何类型形参不是通过名称来标识,而是通过其在方法的类型实参列表中的顺序位置来标识。方法的签名具体不包括返回类型,可能为最右边的参数指定的params修饰符,也不包括可选的类型参数约束。