在C#中静态变量是不是全局变量

如题所述

面向对象编程中,不存在所谓的全局变量的。

也就是说,根本没有全局变量这一个词的!那些解释为有的,请问一下,什么是全局变量?它是SP编程中的一个术语,而在面向对象编程中,怎么可能用到变量呢?!

也就是说在面向对象中有所谓的变量,也只是在程序片断中的,所以不存所谓的全局变量的!因为所有的东西全部均定义在了类中,没有任何变量什么的能定义在类外的!

那么这里的静态变量与所谓的全局变量只是现从此关键词的问题了!也就是static与const的区别,估计很多人会把const看作变量,其实它只是一个字段的修饰符而已。

public class Test
{
private static string Version = "V1.0.0";
private const Double PI = 3.1415826;
.........
//other codes in here;
}
这个类来说吧,Version是什么?很多人说是静态变量,它真是静态变量么?它只是一个字段,不过是一个静态字段。如果按SP的习惯叫做静态变量,其实是不标准的。
PI又是什么?至少我还没有听说有会叫做全局变量的!它只是一个常量而已。很明显,一个常量字段被称做全局变量这种叫法无论如何都是占不住脚的。
两者是肯定有区别的,一个是字段(若理解成sp的变量还有情可原)。但const是一个常量字段,如果叫成全局变量那就没有任何理由了!

那么,也可能public声明的字段被称作全局变量?还是public static声明的字段被称为全局变量?

那么这里去套用也不合适。
public class Test
{
public static string Version="1.0.0";
//这个是所谓的全局变量么?
public string Author = "kusirp21";
//还是指这个是全局变量?
.......
// other code in here;
}
如果是比较这两个的话,那真真没法比了!一个是对象的字段,对象new之后才有,而static由是由类调用的字段。没有static的则是由对象调用的字段。至于public/private/protected/internal只是对调用的范围进行定义。至于什么样的关系,不看都知道的!

所以,变量是指程序中临时声明的,而参数是方法进和传递的变量。静态变量由于SP转行来的程序员不规则称呼,而全局变量——要命的是根本没有这词!

我想知道为什么还会有这么多人答和津津有味的到底是为什么。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-09
当然不是,二者在内存中存储位置不一样追问

哦。。两个是不同意义的概念和用法对吧/

追答

恩 很不一样

第2个回答  2013-05-09
我觉得是一样的。追问

哦 应该是差不多看情况区分的。

追答

写了两年c#以来,我还没有遇到过必须用全局变量,不能用静态变量代替的情况。以后会不会遇到不得而知。

C#中 什么时用 静态变量
静态变量又叫全局变量。顾名思义,就是整个程序都能用的变量。比如我程序需要连接数据库, 连接时需要字符串 string str = "Database = 127.0.0.1; Username = sa; pwd = 123" ;如果只是一个普通变量或者属性, 每次调用时我都要实例化str所在的类,就很麻烦。但是如果写成静态变量 ,直接就...

C语言中的全局变量和局部变量有什么区别?
C#中没有全局变量的概念,可以定义一个common类,通过静态变量来存放所有需要的全局变量,调用的时候通过common来调用即可。调用的时候使用“命名空间.common.属性名”即可,例如 string m_name = common.Name ;common.farray [0, 2] = 0.5 ;...

在C#中什么是静态方法,,实例方法?
1.静态变量 在C#程序中,没有全局变量的概念,这意味着所有的成员变量只有该类的实例才能操作这些数据,这起到了“信息隐藏”的作用。但有些时候,这样做却不是个明智的选择。假设我们要定义一个图书类,要求该类能保存图书的数量,即每增加一本图书(定义一个实例),图书的数量应该加1。如果没有静...

C#静态全局变量和静态局部变量有什么区别?
生命周期和作用域不一样,全局变量拥有全局生命周期,也就是说这段程序不管什么地方都可以引用;局部变量的话只有在定义的那段代码或者类或者方法内引用,一旦这个方法或者类运行结束,那么这个变量就销毁了

C#中在哪里声明全局变量啊,具体位置在哪儿,我是初学者。。。
C#中,没有“全局变量”的概念。但可以通过类的静态字段或属性来模拟C或C++中的全局变量。1)"全局变量"的定义方法:\/\/ 在MyVars类中定义两个“全局变量”public class MyVars{ \/\/ Count是静态字段 public static int Count; \/\/ MaxSize是静态属性 public static int MaxSize {get; ...

全局变量,静态变量,局部变量和new的变量 系统处理垃圾的机制是什么深...
在类的内部,也就是第一层大括号内声明的变量,在C语言中叫全局变量,在C# Java 中叫成员变量,他是对象的属性,可同时赋值也可不赋,有默认值,在new 一个新对象时会在栈内存中申请一块内存 ,在 . 调用时会在堆内存声明一块内存,里面会有你点调用时的属性也就是全局变量(成员变量)调几个...

c语言中能定义静态变量吗?
可以,static在C语言中是表示一个变量为静态变量的,而不是常量,也不是不可变的变量。所谓的静态变量有两种情况,一种是静态全局变量,一种是静态局部变量。像在VB,C#,C,C++,Java,PHP,Objective-C,JavaScript中我们可以看到static作为关键字和函数出现,在其他的高级计算机语言如FORTRAN、ALGOL、...

c# 怎样定义整个程序每个窗口都可以访问的变量?
1. 你说的“每个窗口都可以访问的变量”是指全局变量,在C#中是靠静态类的静态域来实现的,比如定义以下的类:public class MyContext { public static string MyContextVar="HELLO";} 在任何一个窗体中只需要MyContext.MyContextVar就可以获得这个“HELLO”。不过这只是一个简单的例子,这样不是线程...

C#中的类和对象
1. 静态字段和实例字段 在C#程序中,没有全局变量的概念,这意味着所有的成员变量只有该类的实例才能操作这些数据。静态变量在类中类似全局变量,保存类的公共信息,所有该类的实例(对象)共享该值。 使用 static 修饰符声明的字段定义了一个静态字段 (static field)。一个静态字段只标识一个存...

为什么在C#中函数内的变量不叫全局变量呢?
(1)main函数内的变量不是全局变量,而是局部变量。(2)只不过它的生命周期和全局变量一样长而已。(3)全局变量一定是定义在函数外部的。函数分类 从用户使用的角度看,函数有两种:1、标准函数,即库函数。这是由系统提供的。2、用户自定义的函数。可以解决用户的专门需要。二、从函数的形式看,...

相似回答