最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

.NET オブジェクトから返されるデータの処理

.NET 型の MATLAB 型へのマッピング

MATLAB® は自動的にデータを .NET オブジェクトから以下の MATLAB 型に変換します。これらの値はメソッド シグネチャに表示されます。

C# .NET 型MATLAB 型
System.Int16int16 スカラー
System.UInt16uint16 スカラー
System.Int32int32 スカラー
System.UInt32uint32 スカラー
System.Int64int64 スカラー
System.UInt64uint64 スカラー
System.Singlesingle スカラー
System.Doubledouble スカラー
System.Booleanlogical スカラー
System.Byteuint8 スカラー
System.Enumenum
System.Charchar
System.DecimalSystem.Decimal
System.ObjectSystem.Object
System.IntPtrSystem.IntPtr
System.UIntPtrSystem.UIntPtr
System.StringSystem.String
System.Nullable<ValueType>System.Nullable<ValueType>
System.Array

.NET アプリケーションによる配列の使用を参照してください。

System.__ComObject

MATLAB による System.__ComObject の処理方法を参照してください。

class nameclass name
struct namestruct name

プリミティブ .NET 型の配列を MATLAB 型に変換

.NET 配列の要素を、等価な MATLAB 配列に変換するには、以下の MATLAB 関数を呼び出します。例については、MATLAB 配列へのプリミティブ .NET 型配列の変換を参照してください。

C# .NET 型MATLAB の変換関数
System.Int16

int16

System.UInt16uint16
System.Int32int32
System.UInt32uint32
System.Int64int64
System.UInt64uint64
System.Singlesingle
System.Doubledouble
System.Booleanlogical
System.Byteuint8

MATLAB による System.String の処理方法

System.String オブジェクトを MATLAB string に変換するには、関数 string を使用します。System.String オブジェクトを MATLAB 文字配列に変換するには、関数 char を使用します。以下に例を示します。

str = System.String('create a System.String');
mlstr = string(str)
mlchar = char(str)
mlstr = 

    "create a System.String"


mlchar =

    'create a System.String'           

MATLAB には、標準オブジェクトが表示される代わりに、System.String オブジェクトの文字列の値が表示されます。たとえば、次のように入力します。

a = System.String('test')
b = System.String.Concat(a,' hello',' world')
a = 
test
b = 
test hello world

System.String クラスは、引数を取る .NET プロパティの呼び出しで説明されているように、MATLAB でのフィールドとプロパティの処理方法を示します。クラスの参照情報を参照するには、.NET Framework の詳細で説明されているように、.NET Framework クラス ライブラリで用語 System.String を検索してください。

関数 string は、String.String 配列 (String.String[]String.String[,] など) を、同じ次元とサイズの MATLAB string 配列に変換します。String.String[][] などのジャグ配列の変換はサポートされません。

MATLAB による System.__ComObject の処理方法

System.__ComObject 型は Microsoft® COM オブジェクトを表します。これはパブリック メソッドをもたない mscorlib アセンブリの不可視のパブリック クラスです。特定状況下において、.NET オブジェクトは System.__ComObject のインスタンスを返します。MATLAB は、メタデータで定義されている戻り値の型に基づいて System.__ComObject を処理します。

MATLAB によるオブジェクトの変換

メソッドまたはプロパティの戻り値型が厳密に型指定されていて、呼び出しの結果が System.__ComObject の場合、MATLAB は返されたオブジェクトを適切な型に自動的に変換します。

たとえば、アセンブリが型 TestType を定義し、次のシグネチャをもつメソッド GetTestType を提供するものとします。

戻り値の型名前引数
NetDocTest.TestType RetValGetTestType(NetDocTest.MyClass this)

GetTestType の戻り値型が厳密に型指定されており、.NET Framework は System.__ComObject 型のオブジェクトを返します。MATLAB は以下の "疑似コード" で示すように、オブジェクトを適切な型の NetDocTest.TestType に自動的に変換します。

cls = NetDocTest.MyClass;
var = GetTestType(cls)
var = 

  TestType handle with no properties.

オブジェクトの適切な型へのキャスティング

メソッドまたはプロパティの戻り値型が System.Object で、呼び出しの結果が System.__ComObject の場合、MATLAB は System.__ComObject を返します。返されたオブジェクトを使用するには、有効なクラスまたはインターフェイスの型にキャストします。このオブジェクトの有効なタイプを確認するには、製品ドキュメンテーションを参照してください。

新しいタイプのメンバーを呼び出すには、MATLAB 変換構文を使用してオブジェクトをキャストします。

objConverted = namespace.classname(obj)

ここで、objSystem.__ComObject 型です。

たとえば、Microsoft Excel® シート コレクションの項目は、チャートまたはワークシートにすることができます。以下のコマンドは、System.__ComObject 変数の mySheetChart または Worksheet オブジェクトの newSheet に変換します。

newSheet = Microsoft.Office.Interop.Excel.interfacename(mySheet);

ここで、interfacename は、Chart または Worksheet です。例は.NET を使用した Microsoft Excel スプレッドシートでの作業を参照してください。

処理間での COM オブジェクトの受け渡し

関数との間で COM オブジェクトを受け渡しする場合は、オブジェクトがスコープ外になったときに MATLAB によって自動的に解放されないよう、オブジェクトをロックします。オブジェクトをロックするには、関数 NET.disableAutoRelease を呼び出します。これを使用して処理を行った後、関数 NET.enableAutoRelease を使用してオブジェクトのロックを解除します。

MATLAB による System.Nullable の処理方法

.NET が System.Nullable 型を返すと、MATLAB は対応する System.Nullable 型を返します。

System.Nullable 型を使用すると、数値型のような null 値をサポートしていない型に null 値を代入できます。System.Nullable オブジェクトを MATLAB で使用するには、まず null 値の処理方法を決定します。

  • null 値を <ValueType> 値と異なる方法で処理する場合は、HasValue プロパティを使用します。

  • すべての値を基になる <ValueType> にする場合は、GetValueOrDefault メソッドを使用します。このメソッドでは、<ValueType> 型の既定の値を null 値に代入します。

オブジェクトの基となる、MATLAB 式に適した型の変数を使用します。たとえば、System.Nullable 引数の受け渡しを参照してください。

MATLAB による動的な型の処理方法

MATLAB は動的な型を System.Object として処理します。たとえば、以下の C# メソッド exampleMethod は動的な入力引数 d をもち、動的な出力値を返します。

public dynamic exampleMethod(dynamic d)

以下の表は、対応する MATLAB 関数シグネチャを示しています。

戻り値の型名前引数
System.Object RetValexampleMethod(namespace.classname this,
System.Object d)

MATLAB でのジャグ配列の処理

.NET ジャグ配列は、MATLAB コマンドで使用する前に変換しておかなければなりません。次のように変換してください。

  • 配列の形状が四角形の場合、対応する MATLAB の数値関数を使用します。

  • 配列の形状が四角形ではない場合、関数 cell を使用します。

ジャグ配列が多次元の場合は、配列を個々の次元ごとに変換しなければなりません。