MethodBase.IsFinal Propriété

Définition

Obtient une valeur indiquant si cette méthode est final.Gets a value indicating whether this method is final.

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

Valeur de propriété

true si cette méthode est final ; sinon false.true if this method is final; otherwise, false.

Implémente

Exemples

L’exemple suivant affiche false pour IsFinal, ce qui peut vous amener à penser que MyMethod est substituable.The following example displays false for IsFinal, which might lead you to think that MyMethod is overridable. Le code s' false imprime même si MyMethod n' virtual est pas marqué et ne peut donc pas être substitué.The code prints false even though MyMethod is not marked virtual and thus cannot be overridden.

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

Remarques

Pour déterminer si une méthode est substituable, il n’est pas suffisant de vérifier IsVirtual que trueest.To determine if a method is overridable, it is not sufficient to check that IsVirtual is true. Pour qu’une méthode soit substituable, IsVirtual doit être true et IsFinal doit avoir falsela valeur.For a method to be overridable, IsVirtual must be true and IsFinal must be false. Par exemple, une méthode peut être non virtuelle, mais elle implémente une méthode d’interface.For example, a method might be non-virtual, but it implements an interface method. L’Common Language Runtime requiert que toutes les méthodes qui implémentent des membres d’interface virtualsoient marquées comme ; par conséquent, virtual finalle compilateur marque la méthode.The common language runtime requires that all methods that implement interface members must be marked as virtual; therefore, the compiler marks the method virtual final. Dans certains cas, une méthode est marquée comme, virtual mais elle n’est toujours pas substituable.So there are cases where a method is marked as virtual but is still not overridable.

Pour déterminer avec certitude si une méthode est substituable, utilisez un code tel que celui-ci :To establish with certainty whether a method is overridable, use code such as this:

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

Si IsVirtual est false ou IsFinal est ,laméthodenepeutpasêtresubstituée.trueIf IsVirtual is false or IsFinal is true, then the method cannot be overridden.

S’applique à

Voir aussi