Когда вы вызываете метод.NET или функцию от MATLAB®, MATLAB автоматически преобразует аргументы в типы.NET. MATLAB выполняет это преобразование на каждом передаваемом аргументе, за исключением аргументов, которые уже являются объектами.NET. Следующие темы предоставляют информацию о передаче определенных типов данных к методам.NET.
Следующая таблица показывает базовые типы MATLAB для передаваемых аргументов и соответствующих типов.NET, заданных для входных параметров. Каждая строка показывает тип MATLAB, сопровождаемый возможными соответствиями аргумента.NET, слева направо в порядке близости соответствия.
Таблица преобразования типа примитива MATLAB
MATLAB Ввод | Самый близкий Тип <— — — — — Другое Соответствие с Типами.NET — — — — —> Наименьшее закрывает Тип Снабдите каждый тип.NET предисловием с System. | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
логический | Булевская переменная | Байт | SByte | Int16 | Uint16 | Int32 | Uint32 | Int64 | Uint64 | Единственный | 'double' | Объект |
'double' | 'double' | Единственный | Десятичное число | Int64 | Uint64 | Int32 | Uint32 | Int16 | Uint16 | SByte | Байт | Объект |
единственный | Единственный | 'double' | Десятичное число | Объект | ||||||||
int8 | SByte | Int16 | Int32 | Int64 | Единственный | 'double' | Объект | |||||
uint8 | Байт | Uint16 | Uint32 | Uint64 | Единственный | 'double' | Объект | |||||
int16 | Int16 | Int32 | Int64 | Единственный | 'double' | Объект | ||||||
uint16 | Uint16 | Uint32 | Uint64 | Единственный | 'double' | Объект | ||||||
int32 | Int32 | Int64 | Единственный | 'double' | Объект | |||||||
uint32 | Uint32 | Uint64 | Единственный | 'double' | Объект | |||||||
int64 | Int64 | 'double' | Объект | |||||||||
uint64 | Uint64 | 'double' | Объект | |||||||||
'char' | 'char' | Строка | Объект | |||||||||
строка | Строка | Объект |
Следующие примитивные типы аргумента.NET не имеют прямого MATLAB эквивалентными типами. MATLAB передает эти типы, как:
System.IntPtr
System.UIntPtr
System.Decimal
перечислимые типы
Можно передать массив ячеек свойству.NET или методу, ожидая массив System.Object
или System.String
аргументы, как показано в следующей таблице.
Таблица преобразования массива ячеек MATLAB
Тип MATLAB | Самый близкий Тип <— — — Другое Соответствие с Типами.NET — — —> Наименьшее закрывает Тип | ||
---|---|---|---|
Массив ячеек скаляров строки и/или символьных массивов | System.String[] | System.Object[] | System.Object |
Массив ячеек (никакая строка или символьные массивы) | System.Object[] | System.Object |
Элементы ячейки могут какой-либо иметь следующие поддерживаемые типы:
Любые неразреженные, не объединяют встроенный числовой тип, показанный в Таблице преобразования Типа примитива MATLAB
string
char
logical
cellArray
Объект.NET
При вызове метода, который имеет аргумент конкретного класса.NET, передайте объект, который является экземпляром того класса или его производных классов. Можно создать такой объект с помощью конструктора класса или использовать объект, возвращенный членом класса. Когда член класса возвращает объект.NET, MATLAB оставляет его как объект.NET. Используйте этот объект взаимодействовать с другими членами класса.
MATLAB автоматически преобразует:
char
массив на.NET System.String
объект. Передать массив char
массивы, создайте массив ячеек.
string
скаляр на.NET System.String
объект.
Каждый string
скаляр в string
массив на.NET System.String
объект. string
массив преобразован в System.String[]
.
Значение строки <missing>
к пустому указателю.
string.empty
к System.String[]
с размером 0.
Можно передать любое из следующих к методу.NET с System.Nullable<ValueType>
входные параметры:
Переменная базового <ValueType>
null
значение
System.Nullable<ValueType>
объект
Когда вы передаете переменную MATLAB типа ValueType
, MATLAB читает подпись и автоматически преобразует вашу переменную в System.Nullable<ValueType>
объект. Для полного списка возможного ValueType
значения приняты для System.Nullable<ValueType>
, обратитесь к Таблице преобразования Типа примитива MATLAB.
Для примеров смотрите Систему Передачи. Аргументы Nullable.
MATLAB использует пустой double
([]
) значения для аргументов ссылочного типа.
MATLAB не поддерживает передачу следующих типов MATLAB к методам.NET:
Массивы структур
Разреженные массивы
Комплексные числа
MATLAB выбирает правильную сигнатуру метода.NET (включая конструктора, статические и нестатические методы) на основе следующих критериев.
Когда ваша функция MATLAB вызывает метод.NET, MATLAB:
Проверки, чтобы убедиться, что объект (или класс, для статического метода) имеет метод тем именем.
Определяет, передает ли вызов то же количество аргументов по крайней мере одного метода с тем именем.
Убеждается, что каждый передаваемый аргумент может быть преобразован в тип, заданный для метода.
Если всем предыдущим условиям удовлетворяют, MATLAB вызывает метод.
В вызове перегруженного метода, если существует больше чем один кандидат, MATLAB выбирает тот с аргументами, которые лучше всего соответствуют аргументам вызова, на основе Таблицы преобразования Типа примитива MATLAB. Во-первых, MATLAB отклоняет все методы, которые имеют любые типы аргумента, которые несовместимы с передаваемыми аргументами. Среди остающихся методов MATLAB выбирает тот с самым высоким значением фитнеса, которое является суммой значений фитнеса всех его аргументов. Значение фитнеса для каждого аргумента - то, как близко тип MATLAB к типу.NET. Если два метода имеют тот же фитнес, MATLAB выбирает первый, заданный в классе.
Для типов классов MATLAB выбирает сигнатуру метода на основе расстояния входящего типа класса к ожидаемому типу класса.NET. Чем ближе входящий тип к ожидаемому типу, тем лучше соответствие.
Правила для перегруженных методов с дополнительными аргументами описаны в Определении, Какой Перегруженный метод Вызывается.
Откройте methodsview
окно для System.String
класс и взгляд на записи для Concat
метод:
import System.* methodsview('System.String')
Concat
метод берет один или несколько аргументов. Если аргументы имеют тип System.String
, метод конкатенирует значения. Например, создайте две строки:
str1 = String('hello'); str2 = String('world');
При вводе:
String.Concat(str1,str2)
MATLAB проверяет метод Concat
существует и ищет подпись с двумя входными параметрами. Следующая таблица показывает эти две подписи.
Спецификаторы | Возвратите тип | Имя | Аргументы |
---|---|---|---|
Static | System.String RetVal | Concat | система. arg0, |
Static | System.String RetVal | Concat | система. str0 в виде строки, |
Начиная с str1
и str2
имеют класс System.String
, MATLAB выбирает вторую подпись и отображения:
ans = helloworld
Если аргументы имеют тип System.Object
, метод отображает строковые представления значений. Например, создайте два System.DateTime
объекты:
dt = DateTime.Today; myDate = System.DateTime(dt.Year,3,1,11,32,5);
При вводе:
String.Concat(dt,myDate)
MATLAB выбирает следующую подпись, начиная с System.DateTime
объекты выведены из System.Object
класс.
Спецификаторы | Возвратите тип | Имя | Аргументы |
---|---|---|---|
Static | System.String RetVal | Concat | система. arg0, |
Этот Concat
метод сначала применяет ToString
метод к объектам, затем конкатенирует строки. MATLAB отображает информацию как:
ans = 12/23/2008 12:00:00 AM3/1/2008 11:32:05 AM
Для получения информации о передающих массивах MATLAB к методам.NET смотрите Массивы Использования с Приложениями.NET и Передачей Массивы MATLAB как Зубчатые Массивы.
Размерность массива.NET является количеством индексов, требуемых получить доступ к элементу массива. Чтобы получить количество размерностей, используйте Rank
свойство.NET System.Array
ввод. Размерность массива MATLAB является количеством неодноэлементных размерностей в массиве.
MATLAB совпадает с размерностью массивов сигнатуре метода.NET, пока размерность массива MATLAB ниже, чем или равна ожидаемой размерности. Например, можно передать скалярный вход методу, который ожидает 2D массив.
Для массива MATLAB с количеством размерностей, N
, если массив.NET имеет меньше, чем N
размерности, одноэлементные размерности отбрасываний преобразования MATLAB, начиная с первой, до количества остальных измерений совпадают с количеством размерностей в массиве.NET.
Можно передать массив MATLAB методу, который ожидает System.Object
.
Массив MATLAB является прямоугольным массивом. Поддержка платформы.NET зубчатый массив, который является массивом массивов. Таким образом, элементы зубчатого массива могут иметь различные размерности и размеры.
Несмотря на то, что языки.NET поддерживают зубчатые массивы, термин jagged
не ключевое слово языка. Подписи функции C# используют несколько пар квадратных скобок ([][]
) представлять зубчатый массив. Кроме того, зубчатый массив может быть вложен ([][][]
), многомерный ([,]
), или вложенный с многомерными элементами (например, [,,][,][]
).
MATLAB автоматически преобразует массивы MATLAB числовых типов к соответствующему зубчатому типу массива. Если входной параметр является нечисловым типом или многомерный, используйте NET.createArray
функция, чтобы создать массив, чтобы передать как зубчатый массив. Для примеров с помощью NET.createArray
, смотрите Передачу Зубчатые Массивы.