exponenta event banner

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

Пропустить необязательные аргументы

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

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

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

Загрузить 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 со следующими сигнатурами функций.

 вычислить сигнатуры функций

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