MethodBase.IsFinal Właściwość
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
true
jeśli ta metoda to final
; w przeciwnym razie . false
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
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 true
wartość , nie można zastąpić metody .
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 |
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: