MethodBase.IsFinal Propiedad
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
true
si este método es final
; en caso contrario, false
.
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
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 false
true
. 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 true
false
, el método no se puede invalidar.
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 |
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: