2016-09-29 49 views
1

我需要告诉未知变量的类型。 Type.GetTypeCode()似乎足够我的目的,但在byte[]的情况下,它不提供所需的结果。如何获取字节数组的TypeCode?

这里是我的问题简化代码:

var bytes = new byte[10]; 
var typeCode = Type.GetTypeCode(bytes.GetType()); 

// Actual result: typeCode equals Object 
// Desired result (pseudocode): "array of TypeCode.Byte" 

回答

7

TypeCode是一个枚举,并给予有代表“字节数组”不枚举成员,你会得到TypeCode.Objectbecause

对象
表示任何引用或值类型的一般类型,未由另一个TypeCode明确表示。

你可能寻找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

3
var typeCodeName = bytes.GetType().Name;//Byte[] 
var typeCodeFName = bytes.GetType().FullName;//System.Byte[] 

如果您正在使用GetType的名称,则可以返回Byte []。如果这是你的愿望。

相关问题