Vor kurzem sah ich diesen Code von @edplunkett und dachte, das in etwas nützlich sein, würde ich aber tue ich Vertiefung aufzunehmen ändern mag:Was muss ich tun, um den Einzug zu ändern?
static void Main()
{
var randomCrap = new List<Object>
{
1, "two",
new List<object> { 3, 4 },
5, 6,
new List<object> {
new List<object> { 7, 8, "nine" },
},
};
randomCrap.PrintAll();
}
public static class Extensions
{
public static void PrintAll(this Object root)
{
foreach (var x in root.SelectAll())
{
Console.WriteLine(x);
}
}
public static IEnumerable<Object> SelectAll(this object o)
{
// Thank you, eocron
if (o is String)
{
yield return o;
}
else if (o is IEnumerable)
{
var e = o as IEnumerable;
foreach (var child in e)
{
foreach (var child2 in child.SelectAll())
yield return child2;
}
}
else
{
yield return o;
}
}
}
Wie einfach ist es jedes Mal hinzufügen Vertiefung eines IEnumerable
angetroffen wird, so dass Sie diese bekommen würde:
1
two
3
4
5
6
7
8
nine
so etwas wie ein Start-Einzug von 0, die jeder IEnumerable
begegnet durch eine erhöht?
Hahaha! 'randomCrap'. Ich weiß, woher das kommt. – itsme86