#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>), как я показал.