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
Свойство 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])