Как вы получаете тип элемента пустого массива в C #? - PullRequest
0 голосов
/ 08 июля 2019
Int32[] myArray = new Int32[0];

//Somewhere else in code: 
Type t = myArray.GetType();

//t == Int32[]
//element type of t == ???

Как узнать тип элемента, который t был создан для хранения.

Единственный найденный мной пример работает с непустыми массивами, где вы просто делаете myArray [i] .GetType ().Итак, что вы делаете для длины массива 0?

К вашему сведению: я сделал следующее, и он работает нормально, но вау ... он использует преобразование строк и очень уродлив.Должен быть лучший способ:

Type t = myArray.GetType();
string strT = t.ToString();
string strArrayBase = strT.Substring(0, strT.Length - 2);
Type elementType = Type.GetType(strArrayBase);

1 Ответ

1 голос
/ 08 июля 2019

Вы можете использовать .GetElementType()

Например:

> int[] arr = new int[0];
> arr.GetType().GetElementType()
[System.Int32]

Документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...