Zum Spaß, hier ist ein Trick, um eine echte unendliche Sequenz in einem einzigen Ausdruck zu erstellen. Die ersten beiden Definitionen sind Klassenfelder, so dass sie keinen zu initialisierenden Ausdruck benötigen.
%Vor%Hier ist eine ähnliche Antwort wie bei der angegebenen @ hvd, aber mit dem Operator %code% definiert hier , dies beseitigt die Notwendigkeit für die lokalen Variablen:
%Vor%Ein Beispiel wäre:
%Vor%Was würde 20, 10, 5, 2,5 usw. ausgeben ...
Ich würde nicht empfehlen, dies im Produktionscode zu verwenden, aber es macht Spaß.
Der Operator %code% erlaubt auch andere rekursive Lambda-Ausdrücke, z. B .:
%Vor%Es ist nicht wirklich unendlich, aber da sowohl %code% als auch %code% eine verzögerte Ausführung verwenden, werden Sie keine Leistung verlieren.
Ich kenne keinen nativen Weg, um einen unendlichen linq Ausdruck zu erstellen.
Oder Sie können die unendliche Version von %code%
manuell schreibenIch kenne keinen einzigen Ausdruck Weg, aber ich fand diesen cleveren Generator-Code hier: Ссылка
%Vor%In Ihrem Fall würden Sie es verwenden:
%Vor%Ich kenne keine Möglichkeit, mit LINQ eine unendliche Sequenz zu erstellen. Sie könnten jedoch eine sehr lange Sequenz erstellen.
%Vor%Da %code% jedoch eine endliche Genauigkeit hat, erhalten Sie wahrscheinlich nur Nullen, wenn %code% zu hoch wird. Sie müssen experimentieren, um zu sehen, was passiert und wie hoch %code% sein kann, bevor es funktioniert.
Stellen Sie sich eine unendliche Folge ihrer aufeinanderfolgenden Hälften vor.
%Vor%(Ignorieren Sie numerische Instabilitäten in %code% .)
Kann dies in einem einzelnen Ausdruck geschehen, ohne irgendwelche benutzerdefinierten Erweiterungsmethoden oder Generatormethoden zu schreiben?