メインコンテンツ

.NET サポートの制約

R2026b

MATLAB でサポートされない .NET の機能

MATLAB® は、C# がサポートする .NET の機能をサポートしますが、以下の例外があります。

  • .NET Framework アセンブリのアンロード。変更およびリビルドを行った場合は、新しいコードにアクセスするために MATLAB を再起動しなければなりません。

    .NET Core アセンブリをアンロードするには、Unloadable パラメーターを true に設定して NET.addAssembly 関数を呼び出してから、NET.unloadAssembly を呼び出します。 (R2026a 以降)

  • R2025a より前: .NET オブジェクトの MAT ファイルへの保存 (シリアル化)。

  • ClassName.propertyname 構文による静的プロパティの設定。代わりに関数 NET.setStaticProperty を使用してください。

  • 構造体配列、スパース配列、または複素数の .NET プロパティまたはメソッドへの受け渡し。

  • MATLAB からの .NET クラスのサブクラス化。

  • public でないクラス メンバーへのアクセス。

  • 関数 methods または関数 methodsview を使用したジェネリック メソッドの表示。回避策については、反射を使用した .NET ジェネリック メソッドの表示を参照してください。

  • 入れ子にされたクラスのインスタンスの作成。回避策については、.NET の入れ子にされたクラスの使用を参照してください。

  • 特定の下限での .NET 配列の作成。

  • 複数 .NET オブジェクトの連結による配列化。

  • インターフェイス メソッドの実装。

  • Figure ウィンドウでの .NET 制御のホスティング。

  • キャスト操作。

  • ref 型または out 型引数によるコンストラクターの呼び出し。

  • ポインター型引数、関数ポインター、Dllimport キーワード。

  • .NET リモート処理。

  • foreach 反復における MATLAB : (コロン) 演算子の使用。

  • 静的クラスで定義された .NET イベントへのイベント リスナーの追加。

  • 標準シグネチャ非準拠のシグネチャによる .NET イベントの処理。

  • 空の .NET オブジェクトの作成。

  • 名前空間に属さない .NET オブジェクトの作成。

.NET 配列のサポートの制限

MATLAB は以下をサポートしません。

  • 下限指定のある配列

  • .NET オブジェクトの連結による配列化

  • .NET 配列の最後のインデックスとしての関数 end

  • 複素数値の配列インデックス

  • char または cell 配列からジャグ配列引数への自動変換

  • MATLAB 配列から多次元ジャグ配列引数への自動変換

.NET イベントのサポートの制限

MATLAB は、イベント ハンドラー デリゲートの標準シグネチャをもつイベントのみを処理します。

たとえば、C# のイベント ハンドラーは、以下のシグネチャをもつデリゲートです。

public delegate void MyEventHandler(object sender, MyEventArgs e)

引数 sender はイベントが発生したオブジェクトを指定します。引数 e はイベント ハンドラーで使用されるデータを保持します。クラス MyEventArgs は .NET クラス EventArgs から派生します。

.NET デリゲートのサポートの制限

MATLAB では、デリゲート インスタンスの一般的な .NET メソッドへの関連付けはサポートされていません。

メソッドを非同期で呼び出す際は、以下に気を付けてください。

  • MATLAB はシングルスレッド アプリケーションです。したがって、MATLAB 環境で非同期呼び出しを処理すると、デッドロックが発生する可能性があります。

  • Microsoft® .NET に関する記事「AsyncWaitHandle の使用によるアプリケーション実行のブロック」で説明されている手法に関して、引数なしでの WaitOne() メソッドによるオーバーロードの使用は MATLAB でサポートされていません。この手法は、Microsoft .NET Framework でのみサポートされています。

  • EndInvoke を呼び出して非同期呼び出しが完了するまで待機させることはできません。

.NET 列挙型のサポートの制限

MATLAB では、.NET 列挙型の配列、または任意の .NET オブジェクトを作成できません。

参考

トピック