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