Ich habe ein unangenehmes Verhalten bei der Entwicklung von Visual Studio festgestellt. Es hat meinen Rechner beim Kompilieren von C # hängen gelassen.
Ich habe das Verhalten auf den nächsten minimalen Quellcode reduziert
%Vor%Kompilieren mit
%Vor% (unter Verwendung von Windows 8.1 Pro N x64; csc
Compiler-Prozess läuft mit 32 Bit)
sightly Modifikationen erzeugen dieses Verhalten nicht (zB decimal
by int
ändern, eine verschachtelte Ebene reduzieren, ...), eine große Select
dann reduzierend, funktioniert gut
Explizite Problemumgehung:
%Vor%Obwohl diese explizite Problemumgehung vorhanden ist, wird nicht garantiert, dass dieses Verhalten nicht erneut auftritt.
Was ist los?
Danke!
Es scheint, dass die generische Typauflösung in diesem Fall fehlschlägt. Der Wechsel von decimal
zu int
funktioniert zufällig. Wenn Sie die Verschachtelungsebene erhöhen, sehen Sie, dass es auch für int fehlschlägt. Auf meiner x64-Maschine kompiliert dieser Code für int
und decimal
und verwendet ungefähr 2,5 GB Arbeitsspeicher, aber das Erhöhen der Verschachtelungsebene führt zu einem Überlauf, wenn die Speicherbelegung auf 4 GB anwächst.
Das Angeben des type-Arguments erlaubt explizit das Kompilieren von Code:
%Vor%Der Compiler funktioniert auch, wenn Sie die Verschachtelung reduzieren, indem Sie die lokale Variable einführen:
%Vor%Tags und Links c# linq visual-studio csc