2016-09-29 84 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 []。如果這是你的願望。

相關問題