C#C#中变量(局部变量)的声明和范围
全局变量往往在Main函数中声明,其作⽤范围为整个代码;局部变量存在于声明该变量的块语句或⽅法结束的右花括号({})之前的作⽤域内。本⽂对C#中的⼀些变量声明和范围关系借⼏个demo展⽰出来。
情况⼀:变量包含产⽣歧义
根据变量的作⽤域遵循的原则(局部变量存在于声明该变量的块语句或⽅法结束的右花括号({})之前的作⽤域内),第⼀个变量j是在for循环开始前定义的,它的作⽤域是Main()⽅法;第⼆个变量的作⽤域是在for循环;第⼀个变量j的作⽤域包含了第⼆个j的作⽤域。对编译器来说会存在歧义,因为编译器⽆法区分这两个变量,所以不允许声明第2个 变量。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _20200226bianliang
{
class Program
{
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#在变量之间有⼀个基本的区分,类级别声明的变量看作字段(成员变量),⽽⽅法中声明的变量看作局部变量。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _20200226bianliang
{
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函数之前,“升级”为类级变量(此时属于局部变量),通过下⾯的这种⽅法可以实现对类级变量的应⽤。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _20200226bianliang
{
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,这时调⽤时可以直接引⼊类级变量。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _20200226bianliang
{
class Program
{
writeline方法的作用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;
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论