[英]Is access modifier part of Method Signature in C#?
MSDN此處https://msdn.microsoft.com/zh-cn/library/ms173114.aspx說,諸如“ private / protected”之類的訪問修飾符是c#中方法簽名的一部分。
但是,下面的鏈接似乎不這么認為,因此C#中的方法簽名
哪一個? 還有靜態方法呢? 關鍵字“靜態”是方法簽名的一部分嗎?
謝謝
C#5.0規范 1.6.6。
方法的簽名由方法的名稱,類型參數的數量以及其參數的數量,修飾符和類型組成。 方法的簽名不包括返回類型。
CLI規范 I.8.6.1.5方法簽名:
筆記:
*調用約定包括靜態/實例規范。
作為參考,II.15.3調用約定:
調用約定指定方法如何期望其參數從調用方傳遞給被調用方法。 它由兩部分組成: 第一部分處理this指針的存在和類型,第二部分涉及用於傳遞參數的機制。
結論:方法簽名的定義均不包含訪問修飾符。
不要相信靜態是方法簽名的一部分,因為即使調用了靜態方法:
Classname.StaticMethodName(..);
雖然實例方法被調用:
var o = new Classname();
o.MethodName(..);
它仍然定義與簽名匹配的方法和參數。 有關靜態vs實例方法和簽名的更多信息,請參見此文章: 具有相同名稱的靜態和實例方法?
訪問級別不是簽名的一部分,因為您不能擁有:
public void DoThis();
private void DoThis();
兩種方法具有相同的簽名,因為簽名是基於方法,通用參數和方法參數/類型的。
以下是有效的:
public void DoThis();
private void DoThis(int x);
要么:
public void DoThis();
private int DoThis<int>();
簡單來說,方法簽名是由其方法名稱和它所接受的參數確定的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.