オプションの引数を使用した .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