Когда вы вызываете метод .NET или функцию из MATLAB®MATLAB автоматически преобразует аргументы в типы .NET. MATLAB выполняет это преобразование для каждого переданного аргумента, за исключением аргументов, которые уже являются объектами .NET. В следующих разделах приведены сведения о передаче определенных типов данных методам .NET.
В следующей таблице показаны базовые типы MATLAB для переданных аргументов и соответствующие типы .NET, определенные для входных параметров. Каждая строка показывает тип MATLAB, за которым следует возможный аргумент .NET, соответствующий слева направо в порядке близости соответствия.
Таблица преобразования типов примитивов MATLAB
MATLAB Напечатать | Ближайший тип < - - - - - Другие подходящие типы .NET - - - - - > Наименее близкий тип Предисловие к каждому типу .NET с System. | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
логичный | Булев | Байт | SByte | Int16 | UInt16 | Int32 | UInt32 | Int64 | UInt64 | Одинок | Дважды | Объект |
дважды | Дважды | Одинок | Десятичное число | Int64 | UInt64 | Int32 | UInt32 | Int16 | UInt16 | SByte | Байт | Объект |
одинок | Одинок | Дважды | Десятичное число | Объект | ||||||||
int8 | SByte | Int16 | Int32 | Int64 | Одинок | Дважды | Объект | |||||
uint8 | Байт | UInt16 | UInt32 | UInt64 | Одинок | Дважды | Объект | |||||
int16 | Int16 | Int32 | Int64 | Одинок | Дважды | Объект | ||||||
uint16 | UInt16 | UInt32 | UInt64 | Одинок | Дважды | Объект | ||||||
int32 | Int32 | Int64 | Одинок | Дважды | Объект | |||||||
uint32 | UInt32 | UInt64 | Одинок | Дважды | Объект | |||||||
int64 | Int64 | Дважды | Объект | |||||||||
uint64 | UInt64 | Дважды | Объект | |||||||||
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
массив ячеек
Объект .NET
При вызове метода, который имеет аргумент конкретного класса .NET, передайте объект, являющийся образцом этого класса или его производных классов. Можно создать такой объект с помощью конструктора классов или использовать объект, возвращенный представителем класса. Когда член класса возвращает объект .NET, MATLAB оставляет его как объект .NET. Используйте этот объект для взаимодействия с другими членами класса.
MATLAB автоматически преобразует:
char
массив в System.String
.NET объект. Чтобы передать массив
char
массивы, создайте массив ячеек.
string
скаляр на System.String
.NET объект.
Каждый string
скаляр в string
массив в System.String
.NET объект. The
string
массив преобразуется в System.String[]
.
Строковое значение <missing>
в значение null.
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.
Для примеров смотрите Pass System.Nullable Аргументы.
MATLAB использует пустые double
([]
) значения для аргументов типа ссылки.
MATLAB не поддерживает передачу следующих типов MATLAB методам .NET:
Массивы структур
Разреженные массивы
Комплексные числа
MATLAB выбирает правильную сигнатуру метода .NET (включая конструктор, статические и нестатические методы) на основе следующих критериев.
Когда ваша функция MATLAB вызывает метод .NET, MATLAB:
Проверяет, чтобы объект (или класс, для статического метода) имел метод с таким именем.
Определяет, передает ли вызов то же количество аргументов хотя бы одного метода с таким именем.
Проверяет, что каждый переданный аргумент может быть преобразован в тип, заданный для метода.
Если все предыдущие условия удовлетворены, MATLAB вызывает метод.
При вызове перегруженного метода, если существует более одного кандидата, MATLAB выбирает тот, который лучше всего соответствует вызывающим аргументам, на основе таблицы преобразования типов примитивов MATLAB. Во-первых, MATLAB отклоняет все методы, которые имеют любые типы аргументов, несовместимые с переданными аргументами. Среди остальных методов MATLAB выбирает метод с самым высоким значением соответствия, который является суммой значений соответствия всех его аргументов. Значение соответствия для каждого аргумента является близким типом MATLAB к типу .NET. Если два метода имеют одинаковую пригодность, MATLAB выбирает первый, определенный в классе.
Для типов классов MATLAB выбирает сигнатуру метода на основе расстояния между типом входящего класса и ожидаемым типом класса .NET. Чем ближе входящий тип к ожидаемому типу, тем лучше соответствие.
Правила для перегруженных методов с необязательными аргументами описаны в разделе Определение того, какой перегруженный метод вызывается.
Откройте a methodsview
окно для System.String
Класс и смотрите записи для Concat
метод:
import System.* methodsview('System.String')
The Concat
метод принимает один или несколько аргументов. Если аргументы имеют тип System.String
, метод объединяет значения. Для примера создайте две строки:
str1 = String('hello'); str2 = String('world');
Когда вы вводите:
String.Concat(str1,str2)
MATLAB проверяет метод Concat
существует и ищет сигнатуру с двумя входными параметрами. В следующей таблице показаны две сигнатуры.
Имя | Тип возврата | Аргументы | Определители |
---|---|---|---|
Concat | System.String RetVal | (Система. Возразите arg0, | Static |
Concat | System.String RetVal | (Система. Натяните str0, | Static |
Начиная с 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 в качестве Jagged Arrays.
Размерностью массива .NET является количество индексов, необходимых для доступа к элементу массива. Чтобы получить количество размерностей, используйте Rank
свойство System.Array
.NET тип. Размерность массива MATLAB является количеством не синглетных размерностей в массиве.
MATLAB соответствует размерности массива сигнатуре метода .NET, пока размерность массива MATLAB меньше или равна ожидаемой размерности. Для примера можно передать скаляр вход в метод, который ожидает 2-D массив.
Для массива MATLAB с количеством размерностей, N
, если массив .NET имеет меньше N
размерности, преобразование MATLAB понижает синглтонные размерности, начиная с первого, пока количество остальных размерностей не совпадает с количеством измерений в массиве .NET.
Можно передать массив MATLAB в метод, который ожидает System.Object
.
Массив MATLAB представляет собой прямоугольный массив. .NET Framework поддерживает зубчатый массив, представляющий собой массив массивов. Таким образом элементы массива зубчатая матрица может иметь различные размерности и размеры.
Хотя языки .NET поддерживают зубчатые массивы, термин jagged
не является ключевым словом языка. Сигнатуры функции C # используют несколько пар квадратных скобок ([][]
), чтобы представлять зубчатый массив. В сложение jagged массива может быть вложенным ([][][]
), многомерный ([,]
), или вложенный с многомерными элементами (для примера, [,,][,][]
).
MATLAB автоматически преобразует массивы MATLAB числовых типов в соответствующий тип резкого массива. Если входной параметр является нечисловым типом или многомерным, используйте NET.createArray
функция, чтобы создать массив, который будет проходить как массив с заземлением. Для примеров использование NET.createArray
, см. Pass Jagged Массивов.