Ich habe Code von einem anderen Entwickler gesehen, der ungefähr so aussieht:
%Vor%(Es ist überall im Code)
Frage 1:
Würde dieser Fehlerprotokollierungscode sogar aufgerufen werden? Wenn es keinen Speicher gäbe, würde nicht System.OutOfMemoryException
auf diese erste Zeile geworfen werden?
Frage 2: Kann ein Aufruf an einen Konstruktor jemals null zurückgeben?
Sie haben Recht, und dieser Code ist falsch. Es wird OutOfMemoryException
bei einem Fehler werfen. Dies ist in der Dokumentation klar:
"Wenn der neue Operator keine Zuweisung tätigt Speicher, es löst die Ausnahme aus OutOfMemoryException. "
Konstruktoren geben nichts zurück, geschweige denn null. Sie manipulieren ein Objekt, das bereits zugewiesen wurde.
Ich gehe davon aus, dass der Programmierer in C ++ gearbeitet hat und nicht weiß, wie die Dinge in C # funktionieren.
Nun, dieser Code ist eine andere Geschichte:
%Vor%In diesem Fall könnte String Builder (denkbar) Null sein.
Tags und Links .net c# asp.net out-of-memory instantiation