我需要告诉一个未知变量的类型。 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.Objectbecause


  宾语
  表示任何引用或值类型的通用类型,而该类型没有由另一个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/

10-09 19:22
查看更多