MethodBase.IsFinal プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このメソッドが final
かどうかを示す値を取得します。
public:
property bool IsFinal { bool get(); };
public bool IsFinal { get; }
member this.IsFinal : bool
Public ReadOnly Property IsFinal As Boolean
プロパティ値
このメソッドが final
である場合は true
。それ以外の場合は false
。
実装
例
の例をfalse
IsFinal
次に示します。これにより、MyMethod がオーバーライド可能であると考える可能性があります。 MyMethod がマークvirtual
されていないため、オーバーライドできない場合でも、コードは出力false
されます。
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
場合、派生クラスではオーバーライドできません。 オーバーライドされた仮想メソッドは、C# の封印されたキーワード (keyword)、Visual Basic の NotOverridable キーワード (keyword)、または C++/CLI の封印されたキーワード (keyword)を使用してマークfinal
できます。 メソッドは、コンパイラによって暗黙的にマーク final
することもできます。 たとえば、メソッドは、コード内で非仮想として定義できますが、インターフェイス メソッドを実装します。 共通言語ランタイムでは、インターフェイス メンバーを実装するすべてのメソッドを として virtual
マークする必要があります。したがって、コンパイラは メソッド virtual final
をマークします。
このプロパティを プロパティと IsVirtual 組み合わせて使用して、メソッドがオーバーライド可能かどうかを判断できます。 メソッドをオーバーライドできるようにするには、 プロパティを にする必要があり、 IsVirtualIsFinal
プロパティを true
にするfalse
必要があります。 メソッドがオーバーライド可能かどうかを確実に確立するには、次のようなコードを使用します。
if (MethodInfo.IsVirtual && !MethodInfo.IsFinal)
If MethodInfo.IsVirtual AndAlso Not MethodInfo.IsFinal Then
が false
または IsFinal
の場合IsVirtual
、true
メソッドをオーバーライドすることはできません。
適用対象
こちらもご覧ください
.NET