Click here to Skip to main content
15,893,381 members

Welcome to the Lounge

   

For discussing anything related to a software developer's life but is not for programming questions. Got a programming question?

The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.

 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
Slacker0077-Jun-17 8:44
professionalSlacker0077-Jun-17 8:44 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
Foothill7-Jun-17 9:20
professionalFoothill7-Jun-17 9:20 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
Slacker0077-Jun-17 11:24
professionalSlacker0077-Jun-17 11:24 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
carloscs8-Jun-17 7:50
carloscs8-Jun-17 7:50 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
Foothill8-Jun-17 8:11
professionalFoothill8-Jun-17 8:11 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
carloscs8-Jun-17 9:04
carloscs8-Jun-17 9:04 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
Foothill8-Jun-17 9:41
professionalFoothill8-Jun-17 9:41 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
carloscs8-Jun-17 11:23
carloscs8-Jun-17 11:23 
Hmm... using the example on your other post (changed just enough to make the code compile):
byte[] data = new byte[1000];
MemoryStream memStream = new MemoryStream(data);
CryptoStream decStream = new CryptoStream(memStream, SHA1.Create(), CryptoStreamMode.Read);

using (StreamReader reader = new StreamReader(decStream)) {
    byte[] decryptedValue = Encoding.UTF8.GetBytes(reader.ReadToEnd());
    Console.WriteLine(decryptedValue);
}
We get a (for me accurate) CA2000 warning: object 'memStream' is not disposed along all exception paths.

And... what's this, no warning about an undiposed decStream??? Let me check:
SHA1 sha1 = SHA1.Create();
byte[] data = new byte[1000];
using (MemoryStream memStream = new MemoryStream(data)) {
    CryptoStream decStream = new CryptoStream(memStream, sha1, CryptoStreamMode.Read);

    StreamReader reader = new StreamReader(decStream);
    byte[] decryptedValue = Encoding.UTF8.GetBytes(reader.ReadToEnd());
    Console.WriteLine(decryptedValue);
}
No undisposed warnings with VS about this.

Was going to say I could agree with this code, but no, even though it passes VS code analysis I disagree even more with it. Who can say what goes on in all the undisposed inner streams in the case of an exception?

For me:
a) (repeat from my other post) It seems that while VS2015 (and 2017, just tested) code analysis is smart enough to know that innerStream.Dispose calls outerSteam.Dispose it's not smart enough to know that Dispose in streams should be idempotent and should be able to be called several times.

b) It's really strange there being a best practice that doesn't ensure every stream is closed in all code paths, including exceptions.
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
Foothill8-Jun-17 11:34
professionalFoothill8-Jun-17 11:34 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
Mike Marynowski8-Jun-17 10:42
professionalMike Marynowski8-Jun-17 10:42 
GeneralRe: c# Const vs. Readonly, Scope, Usings PinPopular
Dan Neely7-Jun-17 4:51
Dan Neely7-Jun-17 4:51 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
Chris Maunder7-Jun-17 4:52
cofounderChris Maunder7-Jun-17 4:52 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
irneb8-Jun-17 5:41
irneb8-Jun-17 5:41 
GeneralRe: c# Const vs. Readonly, Scope, Usings PinPopular
OriginalGriff7-Jun-17 4:52
mveOriginalGriff7-Jun-17 4:52 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
lopatir7-Jun-17 5:41
lopatir7-Jun-17 5:41 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
TheGreatAndPowerfulOz7-Jun-17 5:43
TheGreatAndPowerfulOz7-Jun-17 5:43 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
Fabio Franco8-Jun-17 1:50
professionalFabio Franco8-Jun-17 1:50 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
TheGreatAndPowerfulOz8-Jun-17 4:48
TheGreatAndPowerfulOz8-Jun-17 4:48 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
Fabio Franco8-Jun-17 5:03
professionalFabio Franco8-Jun-17 5:03 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
TheGreatAndPowerfulOz8-Jun-17 5:22
TheGreatAndPowerfulOz8-Jun-17 5:22 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
Member 102778078-Jun-17 6:14
Member 102778078-Jun-17 6:14 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
Fabio Franco8-Jun-17 6:57
professionalFabio Franco8-Jun-17 6:57 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
pherschel7-Jun-17 6:12
pherschel7-Jun-17 6:12 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
TheGreatAndPowerfulOz7-Jun-17 6:57
TheGreatAndPowerfulOz7-Jun-17 6:57 
GeneralRe: c# Const vs. Readonly, Scope, Usings Pin
Fabio Franco8-Jun-17 1:55
professionalFabio Franco8-Jun-17 1:55 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.