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