如何获取字节数组的TypeCode?

时间:2016-09-29 14:06:19

标签: 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"

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

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

如果您使用GetType的名称,则可以返回Byte []。如果这是你想要的。