Welche Bedeutung hat die Verwendung hier überprüft?

8

Kann jemand folgende Aussage ausarbeiten:

%Vor%

warum sollte ich nicht

verwenden %Vor%     
donstack 04.04.2013, 09:49
quelle

1 Antwort

5

Es wurde versucht, eine Ausnahme auszulösen, wenn objFileStream.Length eine höhere Zahl zurückgibt als int.MaxValue (2147483647), weil Length auf Stream long type zurückgibt (ich nehme an, dass objFileStream is stream ist). In .net ist der arithmetische Überlauf standardmäßig nicht aktiviert.

Nächster Code demonstriert diesen Fall:

%Vor%

Nach einer kurzen Analyse können Sie die nächste Anweisung reduzieren

%Vor%

bis

%Vor%

Persönliche Empfehlung: Ich sehe nicht, wie OverflowException Ihnen hier helfen wird. Math.Min wird sicherstellen, dass das Array nicht länger als 32768 -Elemente erstellt wird. Wenn Sie catch irgendwo in der aufrufenden Methode versuchen, können Sie nicht ableiten, was der Grund für diesen Fehler ist, er kann von irgendwo im aufgerufenen Stapel kommen.

Sie müssen wahrscheinlich nicht immer ein Array der Größe 32768 zuweisen, wie Sie es vorgeschlagen haben

%Vor%

, aber verwenden Sie Math.Min , um Speicherplatz zu sparen, wenn objFileStream.Length eine kleine Zahl zurückgibt

%Vor%     
Ilya Ivanov 04.04.2013, 09:52
quelle

Tags und Links