MethodBase.IsFinal Propiedad

Definición

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

C#
public bool IsFinal { get; }

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.

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

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:

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

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

Se aplica a

Producto Versiones
.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

Consulte también