如何创建全局变量

本文关键字:全局变量 创建 何创建 | 更新日期: 2023-09-27 18:34:27

刚开始,我纯粹对变量范围感到困惑。为什么这行不通?我该如何完成这项工作?有人能帮我吗?为什么变量在主方法中不起作用?[我已经确定这个问题会因为一些我不知道的未知原因而被报告/锁定]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestingC
{
    public class Program
    {
        public void First()
        {
            Console.WriteLine("Apple is: " + apple);
        }
        static void Main(string[] args)
        {
            public const string apple = "good!";
            Console.WriteLine("Apple is: " + apple);
            Console.ReadLine();
            First();
            Console.WriteLine("Apple is: " + apple);
            Console.ReadLine();
        }
    }
}

如何创建全局变量

简单的答案是"括号"定义了范围。

每当你声明一个变量时,如果你想知道在哪里可以使用它,找出它里面的括号集。 在您的情况下,苹果仅适用于主。 首先看不到它,因为它是在不同的级别声明的。 只有与变量位于同一组括号内的东西才能看到它。

另请注意,它是第一组括号,从变量向外。 因此,从苹果的声明开始,您转到main周围的括号。 这描述了苹果的范围。

这将做那个兄弟!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestingC
{
public class Program
  {
    public const string apple = "good!";
    public static void First()
    {
        Console.WriteLine("Apple is: " + apple);
    }
    static void Main(string[] args)
    {
        Console.WriteLine("Apple is: " + apple);
        Console.ReadLine();
        First();
        Console.WriteLine("Apple is: " + apple);
        Console.ReadLine();
    }
  }
}

该变量仅在您声明它的作用域中可见,在本例中位于 Main 方法中。通常,在 C#(以及其他 C 系列语言(中,这意味着在大括号之间。您的苹果变量也将在嵌套范围内可见(Main内部的另一对括号{}(。如果希望变量在两个方法中都可见,则必须将其声明为 Program 类的成员(在类内部但在任何方法外部(

您的变量appleMain 中定义。您只能在该方法中使用它。若要在 First() 方法中使用它,需要在类级别声明apple

public static const string apple = "good!";

就在public class Program {下面

我建议你阅读一些关于变量范围的书。真正的全局变量在 C# 中不存在。

编辑:添加了static,正如史蒂夫指出的那样。

作为对以下内容的回答:

"编辑:如何在函数内创建一个可以被其他函数访问的变量?">

(不再存在,但我认为您是否澄清了您的问题(

简短的回答是你不能,至少不能以你暗示的方式。

方法中

定义的变量是局部变量,保存在堆栈帧上,这意味着它们只能在方法内访问,除非它们作为变量传递到另一个方法中,或者作为返回值或作为outref参数从此方法中返回。

可以将字符串作为参数传递给 First 方法。

因此,将First方法更改为具有参数:

public static void First(string stringToPassIn)
{
    ...
}

并用参数调用它:

First(apple);

然后,您将在该方法中使用stringToPassIn访问它。

您可能应该分别了解引用类型和值类型的按引用传递和按值传递。

首先看到这个https://msdn.microsoft.com/en-us/library/ms173114.aspx

如果您希望在First中声明的内容可以在Main中访问,则可以根据需要使用outref参数。

同样,学习 C# 中的方法将是一个好主意