exponenta event banner

Проход System.Nullable Аргументы

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

В примере показано, как вызвать метод с помощью System.Nullable входной аргумент. Он использует MATLAB ®plot функция для отображения для обработки System.Nullable выходной аргумент.

Построение пользовательской сборки NetDocNullable

Для выполнения кода MATLAB в этом примере создайте NetDocNullable сборка. Сборка создается с кодом C #,NetDocNullable.cs, в matlabroot/extern/examples/NET/NetSample папка. Для просмотра кода откройте файл в MATLAB Editor и создайте 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 свойство имеет значение true (1) и Value свойство - 10.

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

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

  Properties:
    HasValue: 0
  Methods, Superclasses

HasValue свойство имеет значение false (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 значения и вызывает MATLAB plot с помощью функции Value собственность.

Звонить plotValue с переменной field1 для отображения линейного графика.

plotValue(field1)

Звонить plotValue с переменной field2, a null значение.

plotValue(field2)
No Data

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

methodsview(field1)

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

 GetValueOrDefault Подпись функции

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

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

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

Подробнее

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