我需要告诉一个未知变量的类型。 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"
最佳答案
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
。关于c# - 如何获取字节数组的TypeCode?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39772585/