遇到全局变量问题

时间:2017-01-12 07:46:58

标签: 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);
}

我不需要一个能帮助我在没有全局变量的情况下做到这一点的答案,这不是我正在寻找的

当我执行此操作时,我收到此错误:

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'

public static string input = Console.ReadLine ();

给了我

Unexpected symbol 'public'

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

3 个答案:

答案 0 :(得分:4)

您应该在包含两个函数的类中的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变量的范围将是包含类,您可以从该类中的所有方法访问它。

答案 1 :(得分:3)

C#中没有全局变量这样的东西。这将为你做到这一点。您还可以尝试使用静态成员解决方案的静态类来模拟全局变量之类的东西,但这仍然不是全局变量。

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

public class YourClass{

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

答案 2 :(得分:0)

您可以使用Static

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

   public static string Variable1
   {
      get { return _gVariable1 ; }
      set { _gVariable1 = value; }
   }
}

你可以像

一样使用它
Global.Variable1 = "any string value"