Esta documentación está archivada y no tiene mantenimiento.

MethodBase.IsVirtual (Propiedad)

Actualización: noviembre 2007

Obtiene un valor que indica si el método es virtual.

Espacio de nombres:  System.Reflection
Ensamblado:  mscorlib (en mscorlib.dll)

public bool IsVirtual { get; }
/** @property */
public final boolean get_IsVirtual()

public final function get IsVirtual () : boolean

Valor de propiedad

Tipo: System.Boolean
true si este método es virtual; en caso contrario, false.

Un miembro virtual puede hacer referencia a los datos de instancia de una clase y se debe hacer referencia a él mediante una instancia de la clase.

Para determinar si un método se puede reemplazar, no es suficiente comprobar si IsVirtual es true. Para que un método se pueda reemplazar, IsVirtual debe ser true, mientras que IsFinal debe ser false. Por ejemplo, un método podría ser no virtual e implementar un método de interfaz. Common Language Runtime requiere que todos los métodos que implementan miembros de interfaz se marquen como virtual; por consiguiente, el compilador marca el método como virtual final. Así, hay casos en los que un método está marcado como virtual, pero no es reemplazable.

Para establecer con certeza si un método se puede reemplazar, utilice un código como el siguiente:

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

Si IsVirtual es false o IsFinal es true, no se podrá reemplazar el método.

En este ejemplo se muestra false para IsFinal, lo que podría hacer pensar que MyMethod es reemplazable. El código imprime false aunque MyMethod no esté marcado como virtual y, por tanto, no se puede reemplazar.

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


import System.*;
import System.Reflection.*;

public class MyClass
{   
    public void MyMethod()
    {
    } //MyMethod

    public static void main(String[] args)
    {
        MethodBase m = MyClass.class.ToType().GetMethod("MyMethod");
        Console.WriteLine("The IsFinal property value of MyMethod is {0}.",
            System.Convert.ToString( m.get_IsFinal()));
        Console.WriteLine("The IsVirtual property value of MyMethod is {0}.",
            System.Convert.ToString( m.get_IsVirtual()));
    } //main
} //MyClass


import System;
import System.Reflection;

 public class MyClass 
 {
 public function MyMethod() : void
   {
   }
 public static function Main() : void 
   {
    var m : MethodBase  = MyClass.GetMethod("MyMethod");
    Console.WriteLine(m.IsFinal);
   }
 }
 MyClass.Main();


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0

XNA Framework

Compatible con: 2.0, 1.0
Mostrar: