C# 使用全局变量时遇到问题

C# 使用全局变量时遇到问题,c#,C#,我在互联网上到处寻找解决方案,但没有一个有效: public static void Main (string[] args) { Console.Write ("What is your name: "); string input = Console.ReadLine (); sayHi (); } public static string sayHi() { Console.WriteLine ("Hello {0}!", input); } 我不需要

我在互联网上到处寻找解决方案,但没有一个有效:

public static void Main (string[] args)
{
    Console.Write ("What is your name: ");
    string input = Console.ReadLine ();

    sayHi ();
}

public static string sayHi() {
    Console.WriteLine ("Hello {0}!", input);
}
我不需要一个没有全局变量的答案,这不是我想要的

当我执行此操作时,会出现以下错误:

The name 'input' does not exist in the current context
我试着做了一行

public string input = Console.ReadLine ();
但我明白了

Unexpected symbol 'public'
我试过了

static string input = Console.ReadLine ();
但我明白了

Unexpected symbol 'static'
这个

给我

Unexpected symbol 'public'

我不想要不使用全局变量的解决方案

您应该在包含以下两个函数的类中的
Main
方法之外声明变量:

private static string input;

public static void Main (string[] args)
{
    Console.Write ("What is your name: ");
    input = Console.ReadLine ();

    sayHi ();
}

public static string sayHi() {
    Console.WriteLine ("Hello {0}!", input);
}

在这种情况下,
input
变量的作用域将是包含类,您可以从该类中的所有方法访问它。

在C#中没有全局变量。这会对你有用的。您还可以尝试使用静态成员的静态类解决方案来模拟全局变量之类的内容,但这仍然不是全局变量

试试这个(你在这个解决方案的类中使用了一个属性,它在这个类中是“全局的”)


您可以使用
Static
class

static class Global
{
   private static string _gVariable1 = "";

   public static string Variable1
   {
      get { return _gVariable1 ; }
      set { _gVariable1 = value; }
   }
}
你可以像这样使用它

Global.Variable1 = "any string value"

在C#中,所有内容都必须在一个类中。当你想要一个全局变量时,你可以构造“static class global{public string input;}”,你可以在代码中以“global.input”的形式访问它。我认为你需要先学习C#的基本语法和OO的概念,这对您将来的编码会有很大帮助。需要全局变量听起来像是一个XY问题。这不是一个全局变量。它是包含类的全局变量。所以这一切都取决于你对全局变量的定义。@Rawling因为C#没有全局变量,而且从OP对C#来说似乎是新的这一事实来看,我想这是你将要得到的最接近的结果了——以及OP在寻找什么。也许还可以补充一下应该怎么做?告诉他传递参数是一种更干净的方法。全局的定义是“全局”。就像在中一样,任何东西都可以访问和使用它。没有“包含类的全局”这样的东西,因为该范围将是“类级别”。这不是全局变量。@Rawling在C#中没有全局变量这样的东西。这对他会有好处的。他也可以尝试使用带有静态成员的静态类来模拟它,但它仍然不是一个全局变量。这就是问题的答案。@Rawling然后发布你的答案,而不是因为有人使用了错误的术语而不必要地迂腐。@Rob你为什么认为提问者“使用了错误的术语”真的想要一个类变量,而不是不知道C#没有全局变量?
static class Global
{
   private static string _gVariable1 = "";

   public static string Variable1
   {
      get { return _gVariable1 ; }
      set { _gVariable1 = value; }
   }
}
Global.Variable1 = "any string value"