在研究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
你究竟是什么意思,“我仍然可以在一个类型上使用它,它会返回所有实现的接口”。你能提供更多细节或你的意思吗? –
谢谢。你看到了哪些你不期望看到的输出? –