Передайте 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

The HasValue свойство true (1) и Value свойство 10.

Передайте null значения, [].

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

  Properties:
    HasValue: 0
  Methods, Superclasses

The HasValue свойство false (0), и у него нет Value свойство.

Указатель System.Nullable Выходные аргументы в MATLAB

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

The System.Nullable класс предоставляет два метода для обработки значений null. Обеспечить специальную обработку 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

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

Функции plotValue с переменной field1 для отображения линейного графика.

plotValue(field1)

Функции plotValue с переменной field2, а null значение.

plotValue(field2)
No Data

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

methodsview(field1)

Проверьте следующую сигнатуру функции:

 GetValueOrDefault Сигнатура функции

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

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

The 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])

Похожие примеры

Подробнее о

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