Этот пример показывает, как обработать методы.NET с аргументами типа System.Nullable, базовым типом значения которых является double.
Пример показывает, как вызвать метод с входным параметром System.Nullable. Это использует функцию MATLAB® plot, чтобы показать, чтобы обработать выходной аргумент System.Nullable.
Чтобы выполнить код MATLAB в этом примере, создайте блок NetDocNullable. Блок создается с кодом C#, NetDocNullable.cs, в папке matlabroot /extern/examples/NET/NetSample. Чтобы видеть код, откройте файл в редакторе MATLAB и создайте блок NetDocNullable.
NetDocNullable задает метод SetField, который имеет System.Nullable Аргументы Nullable.
Пример принимает, что вы помещаете блок в свою папку c:\work. Можно изменить пример, чтобы изменить путь, dllPath, блока.
dllPath = fullfile('c:','work','NetDocNullable.dll'); asm = NET.addAssembly(dllPath); cls = NetDocNullable.MyClass;
Используйте переменную cls, чтобы вызвать SetField, который создает стоимость System.Nullable<System*Double> от вашего входного параметра.
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, сначала будете решать, как обработать значения 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])