unsafe
C#では、プロジェクトの設定でアンセーフコードの許可を行い、かつ、unsafeキーワードによって囲まれたブロックに限って、以下の機能を使用できる。
- ポインター
- 配列の静的確保(stackalloc)
- sizeof演算子
- アドレス固定(fixed)
これらの機能は、以下の条件を満たすアンマネージド型に限って利用できる。
- 値型である
- 構造体の場合、アンマネージド型のみをメンバーに含むこと
- ジェネリックではないこと
プラットフォーム呼び出し(Platform Invoke, P/Invoke)
C#からネイティブの機能を呼び出す方法には、DllImportとCOMオブジェクトがある。
DllImport
DllImport属性を付けた静的メソッドを作成すると、DLL中のネイティブ関数を呼び出すことができる。外部で定義された関数を参照するには、メソッドにextern修飾子をつける。
COM参照
.NET Framework以前にあった、コンポーネント間の連携の仕組みにCOM(Component Object Model)がある。COM参照を使用することで、C#で作成したアプリケーションからInternet ExplorerやExcelを呼び出すことができる。
補足資料2は本当に補足という感じ。…といいつつ、DllImportとかは実案件だと割と使いそう。