2016-08-20 3 views
1

Ich habe meinen Code durch Code-Analyse in Visual Studio 2015 ausgeführt. Es zeigt eine Warnung, die ich nicht umgehen kann. Der folgende Ausschnitt zeigt das Prinzip. Dieses Programm erzeugt die Warnung CA2202:CA2202: Wie kann die Warnung umgangen werden?

"Objekt 'memoryStream' kann in der Methode mehrfach entsorgt werden ...".

private void tt() 
{ 
    MemoryStream memoryStream = null; 
    StreamWriter streamWriter = null; 
    memoryStream = new MemoryStream(); 
    streamWriter = new StreamWriter(memoryStream, Encoding.Unicode); 
    memoryStream.Close(); 
    streamWriter.Close(); 
} 

Antwort

2

Verfahren Beschreibung StreamWriter.Close gemäß der MSDN ist „schließt das aktuelle Streamobjekt und der darunterliegenden Stream.“. Daher schließen memoryStream.Close() und streamWriter.Close() den zugrunde liegenden Stream. Dies wurde vom Compiler diagnostiziert und empfohlen zu vermeiden. Stellen Sie außerdem sicher, dass Sie streamWriter.Close() aufrufen, da diese Methode die Puffer in streamWriter löscht.

Auch das using Schlüsselwort (Scoping einschließlich eines abschließenden Aufrufs auf .Dispose()/.Close()) ist sehr empfehlenswert für diese Art von Operationen. Bitte beachten Sie die folgende MSDN Seite über eine typische Verwendung.

Verwandte Themen