オプションの引数を使用した .NET メソッドの呼び出し
オプション引数のスキップ
この例では、Greeting メソッドを使ってオプション引数で既定の値を使用する方法を示します。
matlabroot/extern/examples/NET/NetSample フォルダーにある C# の例 NetDocOptional.cs をビルドします。アセンブリのビルドの詳細については、MATLAB 例での .NET アプリケーションのビルドを参照してください。
NetDocOptional アセンブリがまだ読み込まれていなければ、読み込みます。
dllPath = fullfile('c:','work','NetDocOptional.dll'); asm = NET.addAssembly(dllPath); cls = NetDocOptional.MyClass;
この例では、アセンブリを c:\work フォルダーに配置することが仮定されています。関数 fullfile を修正してアセンブリへのパスを変更することができます。
既定の値を表示します。
Greeting(cls,0)
ans = hello world
str1 の既定の値を使用します。
def = System.Reflection.Missing.Value;
Greeting(cls,0,def,'Mr. Jones')ans = hello Mr. Jones
str2 の既定の値を使用します。パラメーター リストの最後の引数は省略できます。
Greeting(cls,0,'My')
ans = My world
オーバーロード メソッドの呼び出し
この例では、オーバーロードされたメソッド calc でオプションの引数を使用する方法を示します。例を実行するには、次の関数シグネチャを使って calc メソッドを Class で定義する独自のアセンブリ Doc を作成し、ビルドしなければなりません。
アセンブリを読み込んで cls を作成します。
cls = Doc.Class;
明示的な引数で calc を呼び出します。
calc(cls,3,4)
ans =
7
パラメーターを省略して既定の値を使おうとすると、MATLAB® ではどのシグネチャを使うかを決められません。
calc(cls)
Cannot choose between the following .NET method signatures due to unspecified optional arguments in the call to 'calc': 'Doc.Class.calc(Doc.Class this, optional<int32 scalar> x, optional<single scalar> y)' and 'Doc.Class.calc(Doc.Class this, optional<int32 scalar> x, optional<double scalar> y)' You can resolve this ambiguity by specifying enough additional optional arguments so that there is only one possible matching .NET method.
既定の値を使うには、両方の引数を指定しなければなりません。
def = System.Reflection.Missing.Value; calc(cls,def,def) calc(cls,3,def) calc(cls,def,4)
ans =
44
ans =
14
ans =
37