这里的MSDN https://msdn.microsoft.com/en-us/library/ms173114.aspx表示像“private / protected”这样的访问修饰符是c#中方法签名的一部分。
但是,下面这个链接似乎并不这么认为Method Signature in C#
是哪一个?那么静态方法呢?关键字“静态”是方法签名的一部分吗?
感谢
答案 0 :(得分:4)
C# 5.0 specification,1.6.6。方法:
方法的签名由方法的名称组成 类型参数的数量以及它的数量,修饰符和类型 参数。方法的签名不包括退货 类型。
CLI specification,I.8.6.1.5方法签名:
注意:
*调用约定包括静态/实例规范。
供参考,II.15.3呼叫惯例:
调用约定指定方法如何期望其参数 从调用者传递给被调用的方法。它由两部分组成 部分:第一部分处理它的存在和类型 指针,而第二个涉及运输机制 争论。
结论:方法签名的定义都不包括访问修饰符。
答案 1 :(得分:0)
In not believe is static是方法签名的一部分,因为即使调用了静态方法:
Classname.StaticMethodName(..);
调用实例方法时:
var o = new Classname();
o.MethodName(..);
它仍然定义了与签名匹配的方法和参数。有关静态与实例方法和签名的更多信息,请参阅此内容:Static and Instance methods with the same name?
访问级别不是签名的一部分,因为您不能拥有:
public void DoThis();
private void DoThis();
两种方法都具有相同的签名,因为签名基于方法,通用参数和方法参数/类型。
以下内容有效:
public void DoThis();
private void DoThis(int x);
OR:
public void DoThis();
private int DoThis<int>();
答案 2 :(得分:0)
简单地说,否。方法签名由其方法名称和它接受的参数决定。