Когда вы вызываете метод.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
к объекту System.String
.NET. Чтобы передать массив массивов char
, создайте массив ячеек.
Скаляр string
к объекту System.String
.NET.
Каждый скаляр string
в массиве string
к объекту System.String
.NET. Массив 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
смотрите Передачу Зубчатые Массивы.