MethodBase.IsFinal Propiedad

Definición

Obtiene un valor que indica si este método es final.

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

Valor de propiedad

true si este método es final; en caso contrario, false.

Implementaciones

Ejemplos

En el ejemplo siguiente se muestra false para IsFinal, lo que podría llevar a pensar que MyMethod es reemplazable. El código se imprime false aunque MyMethod no está marcado virtual y, por tanto, no se puede invalidar.

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

Comentarios

Si el método virtual está marcado como final, no se puede invalidar en clases derivadas. El método virtual invalidado se puede marcar final mediante la palabra clave sealed en C#, La palabra clave NotOverridable en Visual Basic o la palabra clave sealed en C++/CLI. El compilador también puede marcar final implícitamente el método . Por ejemplo, un método podría definirse como no virtual en el código, pero implementa un método de interfaz. Common Language Runtime requiere que todos los métodos que implementan miembros de interfaz se marquen como virtual; por lo tanto, el compilador marca el método virtual final.

Puede usar esta propiedad, junto con la IsVirtual propiedad , para determinar si un método se puede invalidar. Para que un método se pueda invalidar, IsVirtual la propiedad debe ser y IsFinal debe ser falsetrue . Para establecer con certeza si un método se puede invalidar, use código como este:

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

Si IsVirtual es o IsFinal es truefalse , el método no se puede invalidar.

Se aplica a

Consulte también