Если вы просто беспокоитесь о массивах в целом или, что еще лучше, IEnumerable
(согласно вашему составу), тогда я предлагаю оставить отражающую часть проверок и просто попытаться преобразовать в IEnumerable
.
foreach (var val in myList)
{
if (val is IEnumerable enumeration)
{
string.Join(",", array); //You can't use val (as per your example because it's the element of the loop)
}
}
Честно говоря, я не знаю, что вы собираетесь делать с массивом, так как вы добавляете его в строку в качестве объекта, который будет просто array, array, array...
и так далее.Я собираюсь опубликовать лучшее решение, однако я не уверен, что вы этого хотите или нет, потому что то, что вы делаете выше, не имеет большого смысла.
var notSureWhyStringBuilder = new StringBuilder();
foreach (var val in myList)
{
if (val is IEnumerable enumeration)
{
notSureWhyStringBuilder.Append($",{enumeration.ToString()}");
}
}
Console.WriteLine(notSureWhyStringBuilder.ToString());
Теперь с этимпо крайней мере, я чувствую, что ты в том направлении, в котором ты хочешь быть, но мне это не нравится, потому что я не знаю, что ты собираешься из этого извлечь.
Я собираюсь опубликовать еще один пример, который будет повторять и встроить внутреннее перечисление в строку для вас.Я не знаю или предполагаю, что это то, что вы хотите, но между 3 примерами, которые я предоставляю, надеюсь, вы сможете отобрать и переработать его, чтобы получить то, что вам нужно, и, возможно, извлечь из него уроки.Вот небольшое консольное приложение, которое я собрал для вас, чтобы поиграть.Скопируйте и вставьте его как есть, и оно должно работать.
Консольное приложение
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
namespace Question_Answer_Console_App
{
class Program
{
private const string ShortTab = " ";
private static readonly List<object> ListOfObjects = new List<object>()
{
4,
"Michael",
new object(),
new Program(),
69.4,
new List<string>() {"Mathew", "Mark", "Luke", "John" },
new int[] { 1, 3, 5, 7, 9 }
};
static void Main(string[] args)
{
var itemsText = new StringBuilder();
var arrayCounter = 0;
foreach (var item in ListOfObjects)
{
if (item is IEnumerable enumeration)
{
itemsText.AppendLine($"Array: {++arrayCounter}");
if (item is string text)
{
itemsText.AppendLine($"{ShortTab}{text}");
}
else
{
foreach (var innerItem in enumeration) itemsText.AppendLine($"{ShortTab}{innerItem.ToString()}");
}
}
}
Console.WriteLine(itemsText.ToString());
Console.Read();
}
}
}
Выходы
Array: 1
Michael
Array: 2
Mathew
Mark
Luke
John
Array: 3
1
3
5
7
9