MethodBase.IsFinal Vlastnost

Definice

Načte hodnotu, která označuje, zda je tato metoda final .

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

Hodnota vlastnosti

Boolean

true Pokud je tato metoda final . v opačném případě false .

Implementuje

Příklady

Následující příklad zobrazuje false pro IsFinal , což může vést k názoru, že MyMethod lze přepsat. Kód bude vytištěn i v případě, false že MyMethod není označen virtual a nelze jej proto 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čena final , nemůže být přepsána v odvozených třídách. přepsaná virtuální metoda může být označena final pomocí klíčového slova sealed v jazyce C#, klíčové slovo NotOverridable v Visual Basic nebo zapečetěné klíčové slovo v jazyce C++/CLI. Metoda může být také final implicitně označena kompilátorem. Například metoda může být definována jako nevirtuální v kódu, ale implementuje metodu rozhraní. Modul CLR (Common Language Runtime) vyžaduje, aby všechny metody, které implementují členy rozhraní, měly být označeny jako virtual ; proto kompilátor označí metodu virtual final .

Tuto vlastnost lze použít ve spojení s IsVirtual vlastností k určení, zda lze metodu přepsat. Aby bylo možné metodu přepsat, IsVirtual musí být vlastnost true a IsFinal vlastnost musí být false . K navázání jistoty, zda je možné metodu přepsat, použijte kód, jako je například:

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

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

Platí pro

Viz také