The name 'sr' doesn't exist in current context

后端 未结 3 1789
灰色年华
灰色年华 2021-01-22 04:26

I was following example from microsoft site for reading from text file. They say to do it like this:

class Test
{
    public static void Main()
    {
        try         


        
3条回答
  •  花落未央
    2021-01-22 05:10

    I'm only adding this answer because the existing ones (while properly upvoted) just tell you what the error is, not WHY it's an error.

    Doing this;

    using (StreamReader sr = new StreamReader("TestFile.txt"));
    {
         String line = sr.ReadToEnd();
         Console.WriteLine(line);
    }
    

    is actually the same (semantically) as doing this:

    using (StreamReader sr = new StreamReader("TestFile.txt"))
    {
        // Note that we're not doing anything in here
    }
    {
         String line = sr.ReadToEnd();
         Console.WriteLine(line);
    }
    

    The second block (created by the second set of curly braces) doesn't have anything to do with the using block. Since a variable defined within a using block is only in scope within that block, it doesn't exist (in terms of being in scope and accessible) once your code reaches the second block.

    You should use the using statement because StreamReader implements IDisposable. The using block provides a simple, clean way to ensure that--even in the case of an exception--your resources are properly cleaned up. For more information on the using block (and, specifically, what the IDisposable interface is), see the meta description on the IDisposable tag.

提交回复
热议问题