如何创建全局变量
本文关键字:全局变量 创建 何创建 | 更新日期: 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 类的成员(在类内部但在任何方法外部(
您的变量apple
在 Main
中定义。您只能在该方法中使用它。若要在 First()
方法中使用它,需要在类级别声明apple
。
放public static const string apple = "good!";
就在public class Program
{
下面
我建议你阅读一些关于变量范围的书。真正的全局变量在 C# 中不存在。
编辑:添加了static
,正如史蒂夫指出的那样。
作为对以下内容的回答:
"编辑:如何在函数内创建一个可以被其他函数访问的变量?">
(不再存在,但我认为您是否澄清了您的问题(
简短的回答是你不能,至少不能以你暗示的方式。
方法中定义的变量是局部变量,保存在堆栈帧上,这意味着它们只能在方法内访问,除非它们作为变量传递到另一个方法中,或者作为返回值或作为out
或ref
参数从此方法中返回。
可以将字符串作为参数传递给 First
方法。
因此,将First
方法更改为具有参数:
public static void First(string stringToPassIn)
{
...
}
并用参数调用它:
First(apple);
然后,您将在该方法中使用stringToPassIn
访问它。
您可能应该分别了解引用类型和值类型的按引用传递和按值传递。
首先看到这个https://msdn.microsoft.com/en-us/library/ms173114.aspx
如果您希望在First
中声明的内容可以在Main
中访问,则可以根据需要使用out
或ref
参数。
同样,学习 C# 中的方法将是一个好主意