🕰 小故事:VB 的 Handles vs. ASP.NET 的 OnClick
Copyright Notice: This article is an original work licensed under the CC 4.0 BY-NC-ND license.
If you wish to repost this article, please include the original source link and this copyright notice.
Source link: https://v2know.com/article/1281
VB.NET 的「老習慣」
在 VB6 時代(還沒有 .NET 的時候),事件都是用「關鍵字 Handles」來掛的。
比如:
Private Sub Command1_Click()
MsgBox "Hello"
End Sub
VB 編譯器會自動知道 Command1
這個按鈕要把 Click
掛上這個方法。
到了 VB.NET 時,微軟爲了讓 VB 開發者「平滑過渡」,保留了 Handles
的寫法。
所以 VB.NET 仍然允許:
Protected Sub btnBack_Click(...) Handles btnBack.Click
👉 這樣 VB 老程式員會覺得「親切」,不需要學新寫法。
ASP.NET WebForms 的「標準做法」
C# 裏沒有 Handles
。
那怎麼綁事件呢? → 靠 aspx 裏的 OnClick
屬性。
<asp:Button ID="btnBack" runat="server" OnClick="btnBack_Click" />
這會在頁面生命週期中,把事件對應到後台代碼。
ASP.NET 是跨語言的(C# / VB.NET / J# 當年都能寫),所以它需要一個「語言無關」的方式 —— 就是 OnClick
。
為什麼會有兩種?
-
VB 陣營:繼承 VB6 傳統,喜歡寫
Handles
。 -
C# 陣營:只認
OnClick
,因為 C# 語法沒有Handles
。
結果 ASP.NET 就出現了「兩條路都能走」的情況。
-
VB 程式員可以不用在 aspx 裏寫
OnClick
,只靠Handles
。 -
C# 程式員只能靠 aspx 的
OnClick
。
📝 總結成一個小趣味
-
VB:我有
Handles
,代碼看起來自動、簡短,保持 VB 傳統。 -
C#:我沒有
Handles
,只能靠 aspx 的OnClick
。 -
ASP.NET:行吧,你們愛用哪個都行,最後都是調用
AddHandler
。
所以這算是一個「語言歷史兼容」的小故事,特別反映了當年微軟爲了照顧 VB 程式員的「情懷」。
This article was last edited at