MethodBase.IsFinal 屬性

定義

取得值,指出這個方法是否為 final

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

屬性值

Boolean

如果這個方法為 final 則為 true;否則為 false

實作

範例

下列範例顯示的 false IsFinal ,可能會讓您認為 MyMethod 可覆寫。 false即使 MyMethod 未標示 virtual ,也無法覆寫程式碼。

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

備註

如果虛擬方法已標記 final ,就無法在衍生類別中覆寫。 您可以 final 使用 c # 中的sealed關鍵字、Visual Basic 中的NotOverridable關鍵字或 c + + 中的sealed關鍵字標記覆寫的虛擬方法/cli 方法也可以 final 由編譯器隱含地標示。 例如,方法可能會在您的程式碼中定義為非虛擬,但它會執行介面方法。 Common Language Runtime 要求所有實介面成員的方法都必須標記為 virtual ; 因此,編譯器會標示方法 virtual final

您可以搭配屬性使用這個屬性 IsVirtual 來判斷方法是否可覆寫。 如果要讓方法成為可覆寫的, IsVirtual 屬性必須是 true ,而且 IsFinal 屬性必須是 false 。 若要確定方法是否可覆寫,請使用如下所示的程式碼:

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

如果 IsVirtualfalseIsFinaltrue ,則無法覆寫方法。

適用於

另請參閱