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

本文关键字:上下文 不存在 door 名称 | 更新日期: 2023-09-27 18:17:52

我正在编写一个小的控制台程序,它询问姓名和年龄,然后确定您的年龄是否足够继续。我尝试使用一个变量来确定这个人是否可以继续:

Bool door = true;

然后我想问那些因为年龄而被拒绝的人,他们是否想再填写一次。

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

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

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

下面是完整的代码:

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?");
            }
        }
    }
}

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

每一对花括号{ ... }在c#中定义了一个作用域。这意味着在该地区宣布的一切都是当地的。这意味着当你这样做的时候:

{
  Console.WriteLine("U mag net door");
  bool door = true;
  Console.ReadLine();
}

(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();
}

您的"door"变量在if语句的作用域中声明。将它移出if语句并在main的顶部声明。

您在else块中声明了door变量。所以在你的if块,它超出了范围。你能做的就是在两个块都能访问的范围内声明它。也就是说,直接在Main方法

因为bool门是在通过{}确定的不同作用域中创建的,所以它在外部作用域中不存在。将变量移出作用域,它应该可以正常工作。