Udostępnij za pośrednictwem


MethodBase.IsFinal Właściwość

Definicja

Pobiera wartość wskazującą, czy ta metoda to final.

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

Wartość właściwości

truejeśli ta metoda to final; w przeciwnym razie . false

Implementuje

Przykłady

W poniższym przykładzie jest wyświetlana false wartość IsFinal, co może prowadzić do tego, że myMethod można zastąpić. Kod jest drukowany false , mimo że element MyMethod nie jest oznaczony virtual i dlatego nie można go zastąpić.

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

Uwagi

Jeśli metoda wirtualna jest oznaczona final, nie można jej zastąpić w klasach pochodnych. Zastąpioną metodę wirtualną można oznaczyć final przy użyciu zapieczętowanego słowa kluczowego w języku C#, NotOverridable w języku Visual Basic lub zapieczętowanego słowa kluczowego w języku C++/CLI. Metoda może być również oznaczona final niejawnie przez kompilator. Na przykład metoda może być zdefiniowana jako niewirtualna w kodzie, ale implementuje metodę interfejsu. Środowisko uruchomieniowe języka wspólnego wymaga, aby wszystkie metody implementujące elementy członkowskie interfejsu były oznaczone jako virtual; dlatego kompilator oznacza metodę virtual final.

Tej właściwości można użyć w połączeniu z właściwością IsVirtual , aby określić, czy metoda jest zastępowana. Aby metoda można było przesłonić, IsVirtual właściwość musi mieć true wartość , a IsFinal właściwość musi mieć wartość false. Aby ustalić z pewnością, czy metoda jest przesłonięć, użyj kodu takiego jak:

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

Jeśli IsVirtual parametr ma wartość false lub IsFinal ma truewartość , nie można zastąpić metody .

Dotyczy

Zobacz też