c# console.readline 函数内的语句 'not working'
c# console.readline statement 'not working' within a function
public static void EquipSlot1()
{
Console.WriteLine("Choose a weapon for slot 1:");
Console.WriteLine("1. Sword");
public int Slot1Choice = int.Parse(Console.ReadLine());
}
在上面的代码中,我无法在 console.readline 语句之后放置 '}' 来关闭函数。在第二个 writeline 语句之后出现一条红色的波浪线,当我在 readline 语句之后放置“}”时,它认为它是 class 而不是函数的结束。所以我假设由于某种原因,函数内部不允许使用 readline 函数。难道我做错了什么?此外,如果不允许使用 readline 语句,我可以在函数中使用哪些其他形式的输入?
这是因为方法上的 public 访问修饰符。
在方法体内声明的变量具有方法的作用域,不能是public。
将您的代码替换为:
static int Slot1Choice;
public static void EquipSlot1()
{
Console.WriteLine("Choose a weapon for slot 1:");
Console.WriteLine("1. Sword");
Slot1Choice = int.Parse(Console.ReadLine());
}
正如您在标题中提到的,这不是 Console.WriteLine
的问题,错误的原因是 public 声明范围内的方法。这样的 public 声明在方法内部是不允许的,如果我们在任何方法中声明一个变量意味着它的范围仅限于该特定方法。所以我们不允许 re-define 一个 public 变量的 scope,所以它会像下面这样:
public int Slot1Choice=0;
public static void EquipSlot1()
{
Console.WriteLine("Choose a weapon for slot 1:");
Console.WriteLine("1. Sword");
Slot1Choice = int.Parse(Console.ReadLine());
}
public static void EquipSlot1()
{
Console.WriteLine("Choose a weapon for slot 1:");
Console.WriteLine("1. Sword");
public int Slot1Choice = int.Parse(Console.ReadLine());
}
在上面的代码中,我无法在 console.readline 语句之后放置 '}' 来关闭函数。在第二个 writeline 语句之后出现一条红色的波浪线,当我在 readline 语句之后放置“}”时,它认为它是 class 而不是函数的结束。所以我假设由于某种原因,函数内部不允许使用 readline 函数。难道我做错了什么?此外,如果不允许使用 readline 语句,我可以在函数中使用哪些其他形式的输入?
这是因为方法上的 public 访问修饰符。
在方法体内声明的变量具有方法的作用域,不能是public。
将您的代码替换为:
static int Slot1Choice;
public static void EquipSlot1()
{
Console.WriteLine("Choose a weapon for slot 1:");
Console.WriteLine("1. Sword");
Slot1Choice = int.Parse(Console.ReadLine());
}
正如您在标题中提到的,这不是 Console.WriteLine
的问题,错误的原因是 public 声明范围内的方法。这样的 public 声明在方法内部是不允许的,如果我们在任何方法中声明一个变量意味着它的范围仅限于该特定方法。所以我们不允许 re-define 一个 public 变量的 scope,所以它会像下面这样:
public int Slot1Choice=0;
public static void EquipSlot1()
{
Console.WriteLine("Choose a weapon for slot 1:");
Console.WriteLine("1. Sword");
Slot1Choice = int.Parse(Console.ReadLine());
}