MethodBase.IsFinal Właściwość

Definicja

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

C#
public bool IsFinal { get; }

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ć.

C#
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);
    }
}

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:

C#
if (MethodInfo.IsVirtual && !MethodInfo.IsFinal)

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

Dotyczy

Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Zobacz też