有立即來到我的腦海裏至少有兩個很好的理由:
一致性與方法聲明
你是正確的,參數名稱不是簽名的組成部分,因此它在技術上是不需要匹配委託(因此,在將委託與方法匹配時,參數名稱將被忽略)。但是,一致性是語言的一個重要特徵。它使學習變得更容易,減少認知工作量,從而提高生產力。代表是一種方法的「佔位符」。爲了保持一致,將其定義儘可能類似於方法定義是有意義的。一種方法會聲明如下:
void PropertyChangedHandler(object sender, PropertyChangedEventArgs e) {
//...
}
授人以這種方法可以像定義:
delegate void PropertyChangedEventHandler(object sender, PropertyChangedEventArgs e);
正如你所看到的,唯一的區別是delegate
關鍵字(當然缺乏一個方法體,這在這裏是不相關的,因爲這不是簽名的一部分)。這很容易學習和記憶。
發展論壇艾滋病
在Visual Studio中,您可以鍵入事件名稱,然後+=
,按Tab鍵兩次,並會爲您生成的事件處理方法。代表參數的名稱用於生成的方法。如果代表僅帶有參數類型而不帶名稱,則參數必須命名爲param1
,param2
等,這不會很有意義。這同樣適用於其他開發輔助工具,例如,當您編寫代碼調用委託時,智能感知會向您顯示委託參數的名稱。這比他們的類型更有用。
假設您有一個代表對象和EventArgs的兩個對象的委託。你或者其他執行委託的人會如何分辨哪個是哪個? – BoltClock
是否想從接口中聲明的方法中刪除參數名稱,以及抽象方法嗎?基本上,參數列表在任何地方都有一致的語法。 –