发布网友 发布时间:2022-04-23 09:27
共1个回答
热心网友 时间:2023-10-09 12:17
你这说的是什么意思呀。C#怎么会没有全局变量呢,你如果只是不知道怎么可以在不同类之间互想调用变量值这还可以理解。下面是我给你的分类:
全局变量可会为,同类下的全局变量即在一个类里定义
public class class1
{
public int 变量1;
public static int 变量2;
public const int 变量3;
public readonly int 变量4;
}
变量1的调用方法:只能通过class1实例调用。如 class1 test = new class1;
int class变量值 = test.变量1;(注意此时变量值要用关键字public/internal/protecd才可调用)具体这三个关键字的用法你可以去研究下。如是关键字是private 那就不能调用了。但可用变通的做法。可以用属性如可以在类里增加一个属性来控制对变量的调用方式
public int 调用变量1
{
get{return this.变量1;}
private set{this.变量1 = value;}
}
这样你可以把变量1用private关键字封闭起来,不让用户去修改或访问它。如果要知道他的值可以调用属性 int class变量值 = test.调用变量1;获得值。但无法修改这个变量值。除非在属性中的删除set的关键字private 这样才可以在其它类里获取或修改它的值。
变量2的调用方法:这种变量在程序加载之后即运行时。系统就会事先定义此变量。调用方法就是不管在何处都可以对它修改访问 int 变量2值 = class.变量2; 在这里要注意正因为这个变量唯一只有一个不管理你class1创建了多少个实例其变量2的值也只有一份。不会多也不会少。以下的另个变量也是这样的只是其他两种变量不可修改。如果对变量2进行修改的话要注意在多线程的线程冲突。因为此变量只有一份如果其中一个线程正在修改还没有完成而另一个线程确来访问变量值就有可以得到不正确的值。
变量3与变量4的调用方法:与变量2相同只是不能修改。两者唯一不同的是值存放的形式的不同
变量3在编译时是直接将值的给对方的调用方。而变量4是在运行时才把最终的值给调用方。其中利弊可以自己权衡。