При вызове метода или функции .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 | Дважды | Объект | |||||||||
| случайная работа | Случайная работа | Последовательность | Объект | |||||||||
| последовательность | Последовательность | Объект | ||||||||||
Следующие примитивные типы аргументов .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 массив в .NET System.String объект. Передача массива char массивы, создайте массив ячеек.
string скаляр для .NET System.String объект.
Каждый string скаляр в string массив в .NET System.String объект. string массив преобразован в System.String[].
Строковое значение <missing> в значение null.
string.empty кому System.String[] с размером 0.
Можно передать любое из следующих действий методу .NET с помощью System.Nullable<ValueType> входные аргументы:
Переменная андерлаинга <ValueType>
null значение, []
System.Nullable<ValueType> объект
При передаче переменной MATLAB типа ValueTypeMATLAB считывает сигнатуру и автоматически преобразует переменную в System.Nullable<ValueType> объект. Полный список возможных ValueType значения, принятые для System.Nullable<ValueType>, см. таблицу преобразования примитивных типов MATLAB.
Примеры см. в разделе Pass System.Nullable Arguments.
MATLAB использует пустые double ([]) значения для аргументов ссылочного типа.
MATLAB не поддерживает передачу методов .NET следующих типов MATLAB:
Структурные массивы
Разреженные массивы
Комплексные числа
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 существует и ищет подпись с двумя входными аргументами. В следующей таблице показаны две подписи.
| Имя | Тип возврата | Аргументы | Определители |
|---|---|---|---|
Concat | System.String RetVal | (System.Object arg0, | Static |
Concat | System.String RetVal | (System.String str0, | Static |
С тех пор str1 и str2 имеют класс System.StringMATLAB выбирает вторую сигнатуру и отображает:
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 | (System.Object 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 меньше или равна ожидаемой размерности. Например, скалярный ввод можно передать методу, который ожидает 2-D массив.
Для массива MATLAB с числом размеров: N, если массив .NET содержит менее N размеры, преобразование MATLAB сбрасывает одиночные размеры, начиная с первого, до тех пор, пока количество оставшихся измерений не совпадет с числом измерений в массиве .NET.
Массив MATLAB можно передать методу, который ожидает System.Object.
Массив MATLAB представляет собой прямоугольный массив. Платформа .NET Framework поддерживает массив с зазором, который представляет собой массив массивов. Таким образом, элементы зубчатого массива могут иметь различные размеры и размеры.
Хотя языки .NET поддерживают зазубренные массивы, термин jagged не является ключевым словом языка. Сигнатуры функций C # используют несколько пар квадратных скобок ([][]) для представления зубчатого массива. Кроме того, может быть вложен зубчатый массив ([][][]), многомерный ([,]) или вложен в многомерные элементы (например, [,,][,][]).
MATLAB автоматически преобразует массивы MATLAB числовых типов в соответствующий тип массива с зазором. Если входной аргумент является нечисловым типом или многомерным, используйте NET.createArray для создания массива, передаваемого как массив с зазором. Для примеров использования NET.createArray, см. Пасс зазубренные массивы.