在研究Assembly.GetInterfaces()時,我發現該方法是一個MustOverride方法。我的理解意味着它對派生類沒有默認操作。它只是一個基本的簽名,一個抽象的方法。然而,我仍然可以在類型上使用它,它將返回所有實現的接口,而不必爲MustOverride方法編寫任何代碼。MustOverride是一種虛擬方法嗎?
此代碼已經滑入MustOverride方法的位置在哪裏?難道我只是簡單地通過調用創建類型的方法來間接地重寫它?
這個問題純粹是基於研究和發現的基礎上,除了理解語言的範圍之外,我不想做任何事情。
這裏是我使用的代碼:
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim t As Type
Debug.WriteLine(GetType(Integer))
t = GetType(Integer)
Dim interfaceArr As Type() = t.GetInterfaces
For i As Integer = 0 To interfaceArr.Length - 1
Debug.WriteLine(interfaceArr(i))
Next
End Sub
End Class
Output Is:
System.IComparable
System.IFormattable
System.IConvertible
System.IComparable 1[System.Int32]
System.IEquatable 1[System.Int32]
這個問題更詳細地描述了MustOverride。 http://stackoverflow.com/a/1686872/1157215 – Ccorock
你究竟是什麼意思,「我仍然可以在一個類型上使用它,它會返回所有實現的接口」。你能提供更多細節或你的意思嗎? –
謝謝。你看到了哪些你不期望看到的輸出? –