Вызов методов.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