Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

C# C# Basics (Retired) Perfect Variable Scope

Variable Scope

Compiling the below code currently produces the error: "The name 'output' does not exist in the current context". This error is the result of improper variable scoping. The output variable is declared twice: once within the if statement's curly braces and again within the else statement's curly braces. Remember, variables in C# can only be used within the curly braces that they are declared within. The last line of code in this program, Console.WriteLine(output);, is attempting to use a variable named output, which doesn't exist outside of the if/else statement's curly braces. To fix this error: Declare the output variable just before the if statement and assign it to an empty string (i.e. ""). Remove the string data types from the output variables within the if/else statement's curly braces

Bummer* Did you remove the if/else statement? Instead of removing the if/else statement, try correcting the problem by changing the scope of the 'outout' variable.

Code using System;

namespace Treehouse.CodeChallenges { class Program { static void Main() {
string input = Console.ReadLine();

    }
    input == "quit"
}
              output = "Goodbye.";
{
                         string output = "You entered " + input + ".";
}
    if (output = "")
    {                      
        Console.WriteLine(output);
    }   

}

Program.cs
using System;

namespace Treehouse.CodeChallenges
{
    class Program
    {
        static void Main()
        {            
            string input = Console.ReadLine();

        }
        input == "quit"
    }
                  output = "Goodbye.";
    {
                             string output = "You entered " + input + ".";
    }
        if (output = "")
        {                      
            Console.WriteLine(output);
        }   
 }

3 Answers

Steven Parker
Steven Parker
231,248 Points

As one of your error messages hinted, you don't want to remove or alter the "if" and "else" statements. Those need to be the way the code was provided initially.

The challenge gives you a good hint: "Declare the output variable just before the if statement and assign it to an empty string". So add a new declaration before the (original) "If" line to implement this hint. Then you just need to remove the type declarations from the two place "output" was previously declared to convert those lines into plain assignments.

Noted did as below: using System;

namespace Treehouse.CodeChallenges { class Program { static void Main() {
string input = Console.ReadLine(); string output = ""; if (input == "quit") { output = "Goodbye."; } else { output = "You entered " + input + "."; }

        Console.WriteLine(output);
    }
}

}

But below error pop up: Running tests...

Providing a value of "quit"...

Goodbye.

Providing a value of "bogus"...

You entered bogus.

Please help, where am I getting it wrong?

using System;

namespace Treehouse.CodeChallenges { class Program { static void Main() {
string input = Console.ReadLine();

        string output = "";

     if (input == "quit")
        {
            output = "Goodbye.";
        }
    else
        {
            output = "You entered " + input + ".";
        }

        Console.WriteLine(output);
    }
}

}

Steven Parker
Steven Parker
231,248 Points

It's a bit hard to read without formatting, but this looks like it would be a correct solution.

This is what worked for me:

using System;

namespace Treehouse.CodeChallenges
{
    class Program
    {
        static void Main()
        {            
            string input = Console.ReadLine();
            string output = "";

            if (input == "quit")
            {
                 output = "Goodbye.";
            }
            else
            {
                 output = "You entered " + input + ".";
            }

            Console.WriteLine(output);
        }
    }
}

It's a bit tricky challenge... as Steven Parker said "you just need to remove the type declarations from the two place "output" was previously declared to convert those lines into plain assignments"