Main Content

単純な .NET クラスへのアクセス

System.DateTime の例

この例は、システムに既に読み込まれている機能にアクセスする方法を示しています。System.Windows.Forms の例では、アセンブリを MATLAB® に読み込む方法を示します。

この例に続くトピックでは、MATLAB で .NET をお使いいただくときに役立つ、主要な手順と考え方を紹介します。アセンブリの詳細については、アセンブリは .NET クラスのライブラリを参照してください。.NET クラス ライブラリの詳細については、.NET に関する詳細で説明されているサードパーティのドキュメンテーションを参照してください。

Microsoft® .NET アセンブリには、MATLAB で使用できる System.DateTime などのクラスがあります。以下のコードはオブジェクトを作成し、DateTime プロパティおよびメソッドを使用して、現在の日付と時刻に関する情報を表示します。

% Create object for current date and time
netDate = System.DateTime.Now;

% Display properties
netDate.DayOfWeek
netDate.Hour

% Call methods
ToShortTimeString(netDate)
AddDays(netDate,7);

% Call static method
System.DateTime.DaysInMonth(netDate.Year,netDate.Month)

System.Windows.Forms の例

この例では、関数 NET.addAssembly を使用してアセンブリを読み込むことにより、.NET クラスを MATLAB で認識できるようにする方法を説明します。

他の .NET クラスと同様に、Windows.Forms クラスはアセンブリの一部です。クラスを操作するには、NET.addAssembly を呼び出してアセンブリを MATLAB に読み込みます。ベンダーのドキュメンテーションには、アセンブリ名が記載されています。

NET.addAssembly('System.Windows.Forms')
import System.Windows.Forms.*
buttons = MessageBoxButtons.YesNo
result = MessageBox.Show("Yes or no?","Message Box",buttons)

プロンプトに応答してメッセージ ボックスを閉じます。

MATLAB は起動時にそのアセンブリ (mscorlib) を動的に読み込むため、System.DateTime の例は関数 NET.addAssembly を呼び出しません。

メモ

MATLAB のアセンブリはアンロードできません。独自のアセンブリを変更し、リビルドする場合、変更にアクセスするには MATLAB を再起動しなければなりません。

コンストラクターからの .NET オブジェクトの作成

前節の例では Now プロパティを使用して DateTime オブジェクトを作成しました。この例では、いずれかの DateTime "コンストラクター" を使用してオブジェクトを作成する方法を示します。

myDate = System.DateTime(2000,1,31);

このコンストラクター、つまり任意のメソッドを呼び出すには、その引数リスト、つまり "関数のシグネチャ" を知らなければなりません。ベンダーの製品ドキュメンテーションには関数のシグネチャが記載されています。MATLAB 関数 methodsview を使用してシグネチャを表示することもできます。methodsview('System.DateTime') と入力し、次の表に示すような DateTime エントリのリストを検索します。

名前戻り値の型引数
DateTimeSystem.DateTime obj

(int32 scalar year,...)

.NET ドキュメンテーションによると、以下のシグネチャは DateTime 構造体の新しいインスタンスを指定した年、月、日に初期化します。この情報は変数 myDate に必要です。

名前戻り値の型引数
DateTimeSystem.DateTime obj(int32 scalar year,
int32 scalar month,
int32 scalar day)

詳細は、メソッド シグネチャの読み取りを参照してください。

.NET オブジェクトの情報の表示

ベンダーのドキュメンテーションには DateTime オブジェクトに関する情報が記載されていますが、propertiesmethods などの MATLAB コマンドを使用して .NET オブジェクトの情報を表示できます。以下に例を示します。

% Display an object
netDate = System.DateTime.Now
% Display its properties
properties System.DateTime
% Display its methods
methods System.DateTime

MATLAB に次の情報が表示されます (プロパティ値は特定の日時を反映します)。

 DateTime オブジェクトの表示

 DateTime プロパティの表示

 DateTime メソッドの表示

詳細については、以下を参照してください。

.NET データ型の紹介

MATLAB で .NET オブジェクトを使用するには、MATLAB での .NET データ型の処理方法を理解しなければなりません。たとえば、以下の DateTime プロパティおよびメソッドにより、さまざまな .NET データ型の変数が作成されます。

netDate = System.DateTime.Now;
thisDay = netDate.DayOfWeek;
thisHour = netDate.Hour;
thisDate = ToLongDateString(netDate);
thisTime = ToShortTimeString(netDate);
monthSz = System.DateTime.DaysInMonth(netDate.Year,netDate.Month);
whos
Name           Size  Bytes  Class

netDate        1x1     112  System.DateTime
monthSz        1x1       4  int32
thisDate       1x1     112  System.String
thisDay        1x1     104  System.DayOfWeek
thisHour       1x1       4  int32
thisTime       1x1     112  System.String

MATLAB では、型がクラス名として表示されます。

これらの変数を MATLAB で使用するには、以下の内容を検討します。

  • 数値 (int32) — MATLAB は .NET 数値型を等価な MATLAB 型にマッピングして保持します。以下の例では、hint32 型です。

    h = thisHour + 1;
    

    詳細は.NET 型の MATLAB 型へのマッピング数値型を参照してください。

  • 文字列 (System.String) — System.String オブジェクトを MATLAB string に変換するには、関数 string を使用します。

    disp("The time is " + string(thisTime))
  • オブジェクト (System.DateTime) — DateTime オブジェクトの使用法については、.NET クラス ライブラリのドキュメンテーションを参照してください。

  • 列挙型 (System.DayOfWeek) — DateTime のドキュメンテーションによると、DayOfWeek は列挙型です。列挙メンバーを表示するには、以下を入力します。

    enumeration(thisDay)

    詳細は、MATLAB での .NET 列挙型を参照してください。

サポートされている型とマッピングの一覧については、.NET オブジェクトから返されるデータの処理を参照してください。

参考

関連するトピック