名称门在当前上下文中不存在

Mel*_*oot 1 c# console visual-studio

我正在编写一个小程序控制台程序,询问姓名和年龄,然后确定你是否已经足够大了.我尝试使用变量来确定此人是否可以继续:

Bool door = true;
Run Code Online (Sandbox Code Playgroud)

然后我想问那些因年龄而被拒绝的人,如果他们想再次填写.

if (door == false){
  Console.WriteLine("Wilt u op nieuw uw leeftijd invullen?");
}
Run Code Online (Sandbox Code Playgroud)

但是Visual Studio给出了以下错误:

错误CS0103当前上下文ConsoleApplication1中不存在名称"door"

这是完整的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Hallo, wie ben jij? ");
            string Name = Convert.ToString (Console.ReadLine());
            Console.Write("Hallo " + Name + ", hoe oud ben jij? ");
            int Age = Convert.ToInt32 (Console.ReadLine());
            Console.ReadLine();

            if (Age < 18) {
                int remaining = 18 - Age;
                Console.WriteLine("Helaas bent u nog geen achttien, U moet nog:       "+remaining+" Jaar wachten.");
                Console.ReadLine();
            } else if (Age == 18) {
                Console.WriteLine("U mag net door");
                bool door = true;
                Console.ReadLine();
            } else {
                Console.WriteLine("U bent door naar de volgende ronde");
                bool door = true;
                Console.ReadLine();
            }

            if (door == false)
            {
                Console.WriteLine("Wilt u op nieuw uw leeftijd invullen?");
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

SWe*_*eko 6

每对花括号在C#中{ ... }定义一个范围.这意味着在该区域宣布的所有内容都是该区域的本地区域.这意味着当你这样做时:

{
  Console.WriteLine("U mag net door");
  bool door = true;
  Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

door变量所在的区域受封闭的大括号限制,并且在其他任何地方都不存在.当你试图在之后使用它时if (door == false),在一个被调用的变量door不存在且从未存在的地方,编译器基本上会告诉你.

您需要预先声明您的变量,例如

bool door = false;
if (Age < 18){
  //....
} else {
   Console.WriteLine("U bent door naar de volgende ronde");
   door = true;
   Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

能够在整个程序中使用它.