Вызов методов.NET с дополнительными аргументами

Пропуск дополнительных аргументов

Этот пример показывает, как использовать значения по умолчанию в дополнительных аргументах с помощью метода Greeting.

 Приветствие функциональной подписи

Создайте пример C#, NetDocOptional.cs в папке matlabroot /extern/examples/NET/NetSample. Для получения информации о создании блока смотрите, Создают Приложение.NET для MATLAB Examples.

Загрузите блок 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. Чтобы запустить пример, необходимо создать и создать собственный блок Doc, задающий метод calc в Class со следующими функциональными подписями.

 Подписи Функции calc

Загрузите свой блок и создайте 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