Чтение элементов массива из переменной типа объекта в C#

#c# #.net

Вопрос:

У меня есть массив целых чисел, который содержит значение типа [«1» «2» «4» «5» «8»]. Я прочитал этот массив в объекте. Теперь я хотел бы получить эти значения в строке, разделенной запятыми. Я использую c#. Библиотека .NET-это 4.0.

Я пытаюсь использовать следующий фрагмент

 int[] array = new int[] { 0, 1, 2 };
object obj=array;
IEnumerable<object> collection = (IEnumerable<object>)obj;

foreach (object item in collection)
{
    output = output   ","   item.ToString() ;
}
 

Я получаю следующую ошибку -> не удается привести System.Int32[] к System.collection.Общий.IEnumerable

Есть какие-нибудь советы?

Комментарии:

1. Просто используйте string.Join(",", array)

2. obj является int[] . Следовательно, вы должны привести его к массиву int.

3. var collection = (IEnumerable)obj; должно сработать. Не универсальная версия.

Ответ №1:

Попробуйте это:

 int[] array = new int[] { 0, 1, 2 };
object obj=array;

var collection = (IEnumerable<int>)obj;

string result = string.Join(",", collection); // works.
 

Обратите внимание, что я использую фактический тип элементов массива.

Ответ №2:

Зачем ты это делаешь? Int-это уже объект.

 int[] array = new int[] { 0, 1, 2 };
var output = string.Join(",", array);
 

ПРАВКА: Вероятно, вы вводите в заблуждение людей, говоря, что получаете это как объект. Где бы вы его ни взяли, сделайте его бесчисленным.

 void Main()
{
  int[] array = new int[] { 0, 1, 2 };
  Console.WriteLine(GetAsString(array));    
    
}

public string GetAsString<T>(IEnumerable<T> x)
{
    return string.Join(",", x);
}
 

Комментарии:

1. «Int уже является объектом» — это упрощенное утверждение. int рассматривается как значение (пока это не так), и если int бы s были объектами при любых обстоятельствах, бокс не был бы вещью.

2. @RobertHarvey, я не понимаю, что ты имеешь в виду. Вы хотите сказать, что это не объект?

3. Я говорю, что с ним не обращаются как с объектом (пока это не так). В Java это различие становится ясным благодаря наличию отдельных типов для int и Integer , где Integer находится объект, и int является примитивным типом.

4. @Cetin Basoz — Этот целочисленный массив, который я получаю как объект, возвращаемый другой программой. Я пытался смоделировать это в этом коде. Вот почему я пытался манипулировать.

5. @SabyasachiMukherjee, я тоже не понимаю, что вы имеете в виду, извините. Просто используйте строку. Присоединяйтесь(«,», yourenumerable<T>), как я показал.