MethodBase.IsFinal Vlastnost

Definice

Získá hodnotu označující, zda je finaltato metoda .

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

Hodnota vlastnosti

true pokud je finaltato metoda ; jinak , false.

Implementuje

Příklady

Následující příklad zobrazí false pro IsFinal, což může vést k tomu, že myMethod je přepisovatelný. Kód se vytiskne false , i když myMethod není označen virtual , a proto ho nelze přepsat.

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

Poznámky

Pokud je virtuální metoda označená , finalnení možné ji v odvozených třídách přepsat. Přepsanou virtuální metodu lze označit final pomocí klíčového slova sealed v jazyce C#, klíčového slova NotOverridable v jazyce Visual Basic nebo klíčového slova sealed v jazyce C++/CLI. Metodu lze také implicitně označit final kompilátorem. Například metoda může být v kódu definována jako ne virtual, ale implementuje metodu rozhraní. Modul CLR (Common Language Runtime) vyžaduje, aby všechny metody, které implementují členy rozhraní, byly označeny jako virtual, proto kompilátor označí metodu virtual final.

Tuto vlastnost můžete použít ve spojení s IsVirtual vlastností k určení, zda je metoda přepisovatelná. Aby byla metoda přepisovatelná, IsVirtual vlastnost musí být true a IsFinal vlastnost musí být false. Pokud chcete s jistotou zjistit, jestli je metoda přepisovatelná, použijte kód, jako je tento:

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

Pokud IsVirtual je false nebo IsFinal je true, nelze metodu přepsat.

Platí pro

Viz také