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
аргументы.
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])