我需要告诉未知变量的类型。对于我的目的,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"
答案 0 :(得分:7)
TypeCode
是枚举,如果没有枚举成员代表“字节数组”,您将获得TypeCode.Object
,because:
<强>对象强>
表示未由另一个TypeCode明确表示的任何引用或值类型的常规类型。
你可能正在寻找Type.GetElementType()
,因为它会返回:
当前数组[...]
包含或引用的对象类型
使用返回的Type,然后您可以调用Type.GetTypeCode()
:
var byteArray = new byte[0];
Type arrayType = byteArray.GetType();
Type elementType = arrayType.GetElementType();
TypeCode elementTypeCode = Type.GetTypeCode(elementType);
此处,elementTypeCode
将为TypeCode.Byte
。
答案 1 :(得分:3)
var typeCodeName = bytes.GetType().Name;//Byte[]
var typeCodeFName = bytes.GetType().FullName;//System.Byte[]
如果您使用GetType的名称,则可以返回Byte []。如果这是你想要的。