首页 > 编程知识 正文

c#局部变量和全局变量

时间:2023-05-03 12:06:04 阅读:201339 作者:4053

局部变量:声明在函数体内的变量,称之为局部变量。

using System;namespace MSN{ class MainClass { int Add(int num1, int num2) { int sum;//局部变量 sum = num1 + num2; return sum; } public static void Main(string[] args) { Console.WriteLine("Hello World!"); } }}

局部变量的声明范围容易产生歧义

情况一:变量包含产生歧义

根据变量的作用域遵循的原则(局部变量存在于声明该变量的块语句或方法结束的右花括号({})之前的作用域内),第一个变量j是在for循环开始前定义的,它的作用域是Main()方法;第二个变量的作用域是在for循环;第一个变量j的作用域包含了第二个j的作用域。对编译器来说会存在歧义,因为编译器无法区分这两个变量,所以不允许声明第2个 变量。

public static void Main(string[] args){ int j = 20;//在Main中定义j为全局变量 for(int i=0; i<10; i++) { int j = 30;//在for循环中定义j为局部变量,但两者同为Main中,产生了包含与被包含的关系,顾报错。       Console.WriteLine(j);   }}

情况二: 变量升级为“类级变量”

C#在变量之间有一个基本的区分,类级别声明的变量看作字段(成员变量),而方法中声明的变量看作局部变量。

eg:

class Program{ //类的成员字段 public int j = 20;//在Main外声明了一个类级变量 //类的成员方法   static void Main(string[] args)   {       int j = 30;//在Main函数中定义了一个Main中的变量       Console.WriteLine(j);//执行主函数Main,打印Main中的j       return;   }}

情况三 :主函数中引用类级变量

对于情况二,第一个j通过public定义到Main函数之前,“升级”为类级变量(此时属于局部变量),通过下面的这种方法可以实现对类级变量的应用。

eg:

class Program{   public int j = 20;   static void Main(string[] args)   {       int j = 30;       Console.WriteLine(j);       Program obj = new Program();//new创建对象       Console.WriteLine("类级变量是:" + obj.j);//调用方法,引用类级变量j       return;   }}

情况四 :static声明引入类级变量

如果选择将字段声明为 static,这时调用时可以直接引入类级变量。

eg:

class Program{   static int j = 20;//static声明   static void Main(string[] args)   {       int j = 30;       Console.WriteLine(j);       //Program obj = new Program();       Console.WriteLine("类级变量是:" + Program.j);//可直接调用       return;   }}

 

全局变量

很遗憾! C#中不存在全局方法和变量,所有的变量和方法都包含在类的定义之中!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。