MethodBase.IsFinalとは? わかりやすく解説

MethodBase.IsFinal プロパティ

このメソッドが final かどうかを示す値を取得します。

名前空間: System.Reflection
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

解説解説

メソッドがオーバーライドできるかどうかを判断するには、IsVirtual が true であることを確認するだけでは不十分です。オーバーライドできるメソッドは、IsVirtual が true で、IsFinal が false である必要があります。たとえば、メソッドが非仮想で、インターフェイス メソッドを実装している場合があります。共通言語ランタイムでは、インターフェイス メンバを実装するすべてのメソッドは virtual としてマークする必要があるため、コンパイラはメソッドを virtual final としてマークします。したがって、メソッドが virtual としてマークされていても、オーバーライドできない場合もあります。

メソッドがオーバーライドできるかどうかを確実に判断するには、次のようなコードを使用します。

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

IsVirtual が false か、IsFinal が true の場合、このメソッドはオーバーライドできません。

使用例使用例

この例を実行すると、IsFinal の値として false が出力されるため、MyMethod をオーバーライド可能と見なしがちです。MyMethod が virtual としてマークされていなくても、このコードは false を出力するため、MyMethod をオーバーライドすることはできません。

Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic

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
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);
    }
}
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 );
}
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();
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

_MethodBase.IsFinal プロパティ

メモ : このプロパティは、.NET Framework version 2.0 で新しく追加されたものです。

COM オブジェクトに、IsFinal プロパティへのバージョンに依存しないアクセスが用意されています。

このプロパティは、CLS に準拠していません。  

名前空間: System.Runtime.InteropServices
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Dim instance As _MethodBase
Dim value As Boolean

value = instance.IsFinal
bool IsFinal { get; }
property bool IsFinal {
    bool get ();
}
/** @property */
boolean get_IsFinal ()

プロパティ値
このメソッドが final の場合は true。それ以外の場合は false。

解説解説
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
_MethodBase インターフェイス
_MethodBase メンバ
System.Runtime.InteropServices 名前空間


このページでは「.NET Framework クラス ライブラリ リファレンス」からMethodBase.IsFinalを検索した結果を表示しています。
Weblioに収録されているすべての辞書からMethodBase.IsFinalを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からMethodBase.IsFinal を検索

英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「MethodBase.IsFinal」の関連用語

MethodBase.IsFinalのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



MethodBase.IsFinalのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS