全局变量

顾名思义,全局变量就是可以在整个作用域都可以访问的变量,比如有时候我们需要在多个函数中都访问一个变量,这个时候如果通过函数进行传递的话会非常的麻烦,这个时候我们就可以使用全局变量。

C#全局变量

C#为了安全性,代码的简洁性,没有提供全局变量,不过我们可以使用静态类来实现全局变量的功能

 public static class common
 {
    public static int currentNum { get; set; }
 }

我们通过定义一个静态类,并且声明一个静态变量,我们就可以像全局变量一样使用它。

例如: 我们可以在任意函数中对它进行获取和设置。

common.currentNum = 20;

int num = common.currentNum;

static 变量 vs 全局变量

static变量只在自身文件起作用,而全局变量在导出的时候,可以被其它文件中的函数使用。

static int a;
int b;

extern int b;

b可以被其它源文件使用。

静态变量在定义它们的模块的作用域内是局部的,但生命是贯穿整个程序的。说一个函数内部的静态变量不能从该函数外部调用(因为它不在范围内),但是它是活动的并且存在于内存中。下次(在同一程序中)进入此函数时,将访问相同的内存块,现在将保留变量旧值,并且这次不会像该函数中的其他变量(自动变量)一样为该变量分配新的内存。因此,基本上,变量在整个程序中都保留。同样,如果在全局空间(例如文件开头)中定义了静态变量,则
只能在该文件(文件作用域)中访问此变量。

另一方面,全局变量必须全局定义,在整个程序中都存在(生命是持久的),范围也在整个程序中。这意味着可以从任何函数,程序的任何文件访问此类变量。

因此,如果您有一个全局变量并将您的文件作为库进行分发,并且希望其他人不要访问您的全局变量,则可以通过仅在关键字前缀上添加前缀来使其变为静态(当然,如果您的其他文件中不需要相同的变量) )。

Comments are closed.