MethodBase.IsFinal Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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 adalah final
; jika tidak, false
.
Penerapan
Contoh
Contoh berikut menampilkan false
untuk IsFinal
, yang mungkin menyebabkan Anda berpikir bahwa MyMethod dapat ditimpa. Kode mencetak false
meskipun MyMethod tidak ditandai virtual
dan dengan demikian tidak dapat ditimpa.
using namespace System;
using namespace System::Reflection;
public ref class MyClass
{
public:
void MyMethod(){}
};
int main()
{
MethodBase^ m = MyClass::typeid->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 );
}
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 di kelas turunan. Metode virtual yang ditimpa final
dapat ditandai menggunakan kata kunci yang disegel di C#, kata kunci NotOverridable di Visual Basic, atau kata kunci yang disegel di C++/CLI. Metode ini juga dapat ditandai final
secara implisit oleh pengkompilasi. 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 diganti. Agar metode dapat diganti, IsVirtual properti harus dan true
IsFinal
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
, true
maka metode tidak dapat ditimpa.