#c#
#c#
Вопрос:
Мне нужно указать тип неизвестной переменной. Type.GetTypeCode()
кажется достаточно хорошим для моих целей, но в случае byte[]
с ним не обеспечивается желаемый результат.
Вот упрощенный код для моей проблемы:
var bytes = new byte[10];
var typeCode = Type.GetTypeCode(bytes.GetType());
// Actual result: typeCode equals Object
// Desired result (pseudocode): "array of TypeCode.Byte"
Ответ №1:
TypeCode
это перечисление, и, учитывая, что нет элемента enum, представляющего «массив байтов», вы получите TypeCode.Object
, потому что:
Объект
Общий тип, представляющий любую ссылку или тип значения, явно не представленный другим кодом типа.
Вы, вероятно, ищете Type.GetElementType()
, поскольку это возвращает:
Тип объекта, охватываемого или на который ссылается текущий массив […]
Используя этот возвращаемый тип, вы, в свою очередь, можете вызвать Type.GetTypeCode()
:
var byteArray = new byte[0];
Type arrayType = byteArray.GetType();
Type elementType = arrayType.GetElementType();
TypeCode elementTypeCode = Type.GetTypeCode(elementType);
Вот, elementTypeCode
будет TypeCode.Byte
.
Ответ №2:
var typeCodeName = bytes.GetType().Name;//Byte[]
var typeCodeFName = bytes.GetType().FullName;//System.Byte[]
Вы можете вернуть Byte[], если вы используете имя GetType . Если это то, что вы хотите.