Bagikan melalui


MethodBase.IsFinal Properti

Definisi

Mendapatkan nilai yang menunjukkan apakah metode ini adalah final.

public:
 property bool IsFinal { bool get(); };
public bool IsFinal { get; }
member this.IsFinal : bool
Public ReadOnly Property IsFinal As Boolean

Nilai Properti

true jika metode ini ; finaljika tidak, false.

Penerapan

Contoh

Contoh berikut menampilkan false untuk IsFinal, yang mungkin menyebabkan Anda berpikir bahwa MyMethod dapat diganti. Kode mencetak false meskipun MyMethod tidak ditandai virtual dan dengan demikian tidak dapat ditimpa.

using System;
using System.Reflection;

public class MyClass
{
    public void MyMethod()
    {
    }
    public static void Main()
    {
        MethodBase m = typeof(MyClass).GetMethod("MyMethod");
        Console.WriteLine("The IsFinal property value of MyMethod is {0}.", m.IsFinal);
        Console.WriteLine("The IsVirtual property value of MyMethod is {0}.", m.IsVirtual);
    }
}
Imports System.Reflection

Public Class MyClass1
    
    Public Sub MyMethod()
    End Sub
    
    Public Shared Sub Main()
        Dim m As MethodBase = GetType(MyClass1).GetMethod("MyMethod")
        Console.WriteLine("The IsFinal property value of MyMethod is {0}.", m.IsFinal)
        Console.WriteLine("The IsVirtual property value of MyMethod is {0}.", m.IsVirtual)
    End Sub
End Class

Keterangan

Jika metode virtual ditandai final, metode tersebut tidak dapat ditimpa dalam kelas turunan. Metode virtual yang ditimpa dapat ditandai final menggunakan kata kunci yang disegel dalam kata kunci C# atau NotOverridable di Visual Basic. Metode ini juga dapat ditandai final secara implisit oleh kompilator. Misalnya, metode mungkin didefinisikan sebagai non-virtual dalam kode Anda, tetapi menerapkan metode antarmuka. Common Language Runtime mengharuskan semua metode yang mengimplementasikan anggota antarmuka harus ditandai sebagai virtual; oleh karena itu, pengkompilasi menandai metode virtual final.

Anda dapat menggunakan properti ini, bersama dengan IsVirtual properti , untuk menentukan apakah metode dapat diambil alih. Agar metode dapat diambil alih, IsVirtual properti harus dan trueIsFinal properti harus false. Untuk menetapkan dengan pasti apakah metode dapat diambil alih, gunakan kode seperti ini:

if (MethodInfo.IsVirtual && !MethodInfo.IsFinal)
If MethodInfo.IsVirtual AndAlso Not MethodInfo.IsFinal Then

Jika IsVirtual adalah false atau IsFinal , truemaka metode tidak dapat ditimpa.

Berlaku untuk

Lihat juga