1

Assembly.GetInterfaces()を調査しているときに、メソッドが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]
4

1 に答える 1