該当部分(冒頭)
|
1 2 3 4 5 |
[ComImport] [Guid(A9B3D012-3DF2-4EE3-B8D1-8695F457D3C1")] [InterfaceType(ComInterfaceType. InterfacelsIUnknown)] [ComVisible (true)] interface IDirect3DDxgiInterfaceAccess |
説明:
これらの[]は「産性」(Attribute)を定義しているもので、配列とはまったく関係ありません。
・Comlmport:このインターフェイスがCOM (Component Object Model)オブジェクトであることを示す。
・Guid(…・・):インターフエイスのGUID(グローバルー意識別子)を指定する。
・InterfaceType(…):COMインターフェイスの種類を指定する(ここではIUnknown型)。
・ComVisible(true):COMからこの型が見えるかどうかを指定する。
これらはコンパイラにメタデータを伝える目的で使われます
メソッドの引数[In] ref Guid iid
|
1 |
IntPtr GetInterface([In] ref Guid iid); |
説明:
この[In]もまた属性です。引数が「入力専用」であることを明示する属性で、NETのP/nvoke(Platform Invocation Services)やCOMとの相互運用に使われます。
・[In]は明示しなくてもrefなら既定で「in としてもout としても」扱われますが、安全性や明確さのために書くことがあります。
まとめ:配列ではない[]の意味
| 使い方 | 意味 | 関連例 |
| [ComImport]などの[] | 属性(Attribute) | クラス・インターフェイス・メソッド・引数のメタ情報 |
| [In] | 引数の入出力方向を示す属性 | GetInterface([In] ref Guid iid) |
ワンポイント補足
C#における[]の使い方をさっくり分頼すると:
| 用途 | 例 | 意味 |
| 配列の定義 | int[] nums = new int[5]; | 配列の型・アクセス |
| 属性 | [Obsolete]. [D11Import(…)] | コンパイル時のメタ情報を提供 |
| インデクサーアクセス | list[®], dict[“key”] | コレクションや配列の要素アクセス |
| 属性付き引数 | [In], [Out] | P/Invoke などで使われる引数修飾子 |

コメント