Передайте System.Nullable Аргументы

В этом примере показано, как обработать методы.NET с System.Nullable аргументы типа, базовым типом значения которых является double.

Пример показывает, как вызвать метод с System.Nullable входной параметр. Это использует MATLAB® plot функционируйте, чтобы показать, чтобы обработать System.Nullable выходной аргумент.

Создание пользовательского блока NetDocNullable

Чтобы выполнить код MATLAB в этом примере, создайте NetDocNullable сборка. Блок создается с кодом C#, NetDocNullable.cs, в matlabroot/extern/examples/NET/NetSample папка. Чтобы видеть код, откройте файл в редакторе MATLAB и создайте NetDocNullable сборка.

NetDocNullable задает метод SetField который имеет System.Nullable аргументы.

 SetField Функциональная подпись

Загрузите NetDocNullable Сборка

Пример принимает, что вы помещаете блок в свой c:\work папка. Можно изменить пример, чтобы изменить путь, dllPath, из блока.

dllPath = fullfile('c:','work','NetDocNullable.dll');
asm = NET.addAssembly(dllPath);
cls = NetDocNullable.MyClass;

Используйте cls переменная, чтобы вызвать SetField, который создает System.Nullable<System*Double> значение от вашего входа.

Передайте System.Nullable Входные параметры

MATLAB автоматически преобразует double и null значения к System.Nullable<System*Double> объекты.

Передайте double значение.

field1 = SetField(cls,10)
field1 = 
  System.Nullable<System*Double>
  Package: System

  Properties:
    HasValue: 1
       Value: 10
  Methods, Superclasses

HasValue свойство верно (1) и Value свойством является 10.

Передайте нулевое значение, [].

field2 = SetField(cls,[])
field2 = 
  System.Nullable<System*Double>
  Package: System

  Properties:
    HasValue: 0
  Methods, Superclasses

HasValue свойство является ложным (0), и это не имеет никакого Value свойство.

Обработайте System.Nullable Выходные аргументы в MATLAB

Прежде чем вы будете использовать System.Nullable объект в MATLAB, сначала решите, как обработать null значения. Если вы игнорируете null значения, вы можете получить неожиданные результаты, когда вы используете значение в функции MATLAB.

System.Nullable класс обеспечивает два метода для обработки нулевых значений. Обеспечить специальную обработку для null значения, используйте HasValue свойство. Обрабатывать null значение таким же образом как double, используйте GetValueOrDefault метод.

Создайте функцию MATLAB, plotValue.m, который обнаруживает null значения и обрабатывают их по-другому по сравнению с числовыми значениями. Входом является System.Nullable<System*Double> ввод. Если входом является null, функция отображает сообщение. Если входным значением является double, это создает линейный график из 0 к значению.

function plotValue(x)
% x is System.Nullable<System*Double> type
if (x.HasValue && isfloat(x.Value))
  plot([0 x.Value])
else
  disp('No Data')
end

plotValue функционируйте использует HasValue свойство входного параметра обнаружить null значения и вызовы plot MATLAB функция с помощью Value свойство.

Вызовите plotValue с переменной field1 отобразить линейный график.

plotValue(field1)

Вызовите plotValue с переменной field2, null значение.

plotValue(field2)
No Data

Если вам не нужна специальная обработка для null значения, используйте GetValueOrDefault метод. Отобразить GetValueOrDefault функциональная подпись, введите:

methodsview(field1)

Ищите следующую функциональную подпись:

 GetValueOrDefault Функциональная подпись

Этот метод преобразует входную переменную в double таким образом, можно непосредственно вызвать plot MATLAB функция:

myData = GetValueOrDefault(field1);
plot([0 myData+2])

GetValueOrDefault метод преобразует null значение к числовому значению по умолчанию, 0.

defaultData = GetValueOrDefault(field2)
defaultData =
     0

Вызовите plot:

plot([0 defaultData])

Можно изменить значение по умолчанию с помощью GetValueOrDefault метод. Откройте methodsview окно и ищет следующую функциональную подпись:

 GetValueOrDefault Функциональная подпись, чтобы изменить значение по умолчанию

Установите defaultValue входной параметр к новому значению, -1, и постройте результаты для null значение field2.

defaultData = GetValueOrDefault(field2,-1);
plot([0 defaultData])

Связанные примеры

Больше о

Внешние веб-сайты