ドキュメンテーション

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

.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

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 を使用します。

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