OpCodes.Readonly フィールドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > OpCodes.Readonly フィールドの意味・解説 

OpCodes.Readonly フィールド

メモ : このフィールドは、.NET Framework version 2.0新しく追加されたものです。

以降配列アドレス演算で、実行時に型チェック実行しないこと、および変更可能性制限されマネージ ポインタ返すことを指定します

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

解説解説

命令16 進数形式MSIL (Microsoft Intermediate Language) アセンブリ形式、および簡単な説明の一覧を次の表に示します

このプリフィックスは、ldelema 命令直前にだけ置くことができ、配列に対して特殊な Address メソッド呼び出します。以降演算に対して次の 2 つ影響あります

  1. 実行時に、型チェック演算実行されません。参照型配列使用すると、通常ldelema 命令stelem 命令暗黙の型チェック実行されます。クラス実行時の型チェックが行われることはないため、この場合 readonly操作できません。

  2. 検証では、変更可能性制限されマネージ ポインタとしてアドレス演算結果扱います

定義する型によって値を変更できるかどうか制御されるため、ポインタ変更可能性制限されていると言われます。値を適切に更新するパブリック フィールドまたは非パブリック メソッド公開しないクラス場合ポインタ読み取り専用です。したがってポインタプリフィックスの名前になります。特に、プリミティブ型を表すクラス (System.Int32 など) は、ミューテータを公開しないため、読み取り専用なります

この方法で制限されマネージ ポインタは、次の方法でのみ使用できます

stobjinitobjmkrefany の各演算またはすべての stind 命令含め、他のすべての演算許可されていません。

readonly プリフィックス目的は、ジェネリック コード配列から要素フェッチする際の型チェック回避することです。たとえば、arr 配列要素型が m メソッドとのインターフェイスを持つように制約されジェネリック型である式 arr[i].m() は、次の MSILコンパイルできます

ldloc arr
ldloc i
readonly.
ldelema !0    // Loads the pointer to the object.
…             // Load the arguments to the call.
constrained. !0
callvirt m

readonly プリフィックスがないと、!0 が参照型場合ldelema 命令は型チェック実行します。この型チェック非効率的であるだけでなく、形式的に不正確でもありますldelema の型チェック厳密な一致求めるため、強力すぎます配列が !0 型のサブクラス保持している場合上記コードでは型チェック失敗します

値型参照型両方に対して機能する arr[i]ハンドルを持つために、要素自体ではなく配列要素アドレスフェッチされます。そして、配列要素アドレスconstrained callvirt 命令に渡すことができます

通常配列参照型要素保持している場合実行時チェックスキップすることは危険です。安全性確保するには、このポインタ通じて配列への変更が行われないことを保証する必要があります検証規則によってこれを保証します制限されマネージ ポインタは、インスタンス メソッド呼び出しオブジェクトとして渡すことができるため、厳密に言うと値型に対して読み取り専用ではありませんが、値型に関するタイプ セーフ問題発生しません。

readonly オペコード使用できる Emit メソッド オーバーロード次に示します

  • ILGenerator.Emit(OpCode)

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
OpCodes クラス
OpCodes メンバ
System.Reflection.Emit 名前空間


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

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

OpCodes.Readonly フィールドのお隣キーワード
検索ランキング

   

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



OpCodes.Readonly フィールドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2025 GRAS Group, Inc.RSS