C#中的变量
例如:int i;//声明一个int类型的变量,变量名是 i;在未为该变量进行赋值操作前,禁止使用该变量.使用(=)给变量赋值,在声明之后可以 i=10来赋值.也可以在声明一个变量的同时给它初始化例如:int i=10;也可以这样声明int x=10,y=20;这表示x和y都是int类型的变量.
声明不同的变量需要使用不同的语句,即没生命一个变量都需要用(;)来分割开来,例如:int i=0;int a=10;int b=20;
在声明一个变量的时候一定要对其进行初始化,因为这样做可以防止我们我一种从其他程序遗留下来的内存中获取垃圾值.
C#中有两个方法可以确保变量在使用之前进行了初始化:
1:变量是类或者结构中的字段,如没有进行显示初始化,创建这些变量的时候,默认值是0.
2.方法的局部变量必须在代码中显示的初始化,之后次啊能在与剧中使用它们的值.例如:
public static void Main()
{
int i;
Console.WriteLine(i);//在编译的时候会报错,原因是没有进行初始化或者赋值操作便使用该变量.
}
类型推断使用var关键字,声明变量的语法有些变化.编译器可以根据变量的初始化值来”判断”变量的类型.例如:
var name = "zhangsan";
var age = 24;
var isRabbit = true;
Type nameType = name.GetType();
Type ageType = age.GetType();
Type isRabbitType = isRabbit.GetType();
Console.WriteLine(nameType.ToString());
Console.WriteLine(ageType.ToString());
Console.WriteLine(isRabbitType.ToString());
Console.ReadKey();
程序的输出结果为:
System.String
System.Int32
System.Bool
在声明推断类型的变量的时候一定要初始化,否者编译器没有推断变量类型的依据.
声明了变量,推断出了类型后就不能改变变量的类型了.例如:var name=”zhangsan”;name=90;这是不对的.
变量的作用域:就是一个变量的有效范围.作用域是离变量最近的一对花括号就是该变量的作用域.在for,while或者类似语句中声明的局部变量存在于该循环体内.
另外同一个变量不能声明两次.下两两个例子帮助理解:
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
}
for (int i = 9; i >= 0; i--)
{
Console.WriteLine(i);
}
可以这么做的原因为第一个i在第一个循环中有效,第二个i在第二个循环中有效,互不影响.
但是如果这样:
int j = 0;
for (int i = 0; i < 10; i++)
{
int j = 20;
Console.WriteLine(j);
}
则会产生错误.原因为是第一个j的作用域包含了循环中的j,所以产生了相当于二次定义的错误.
namespace day1
{
class Program
{
static int j = 10;//这是类级别的变量,相当于全局变量
static void Main(string[] args)
{
int j = 20;//这是方法级别的变量.
for (int i = 0; i < 10; i++)
{
Console.WriteLine(j);
}
Console.ReadKey();
}
}
}
可以得出,一个变量在一个方法中不能声明两次;类级别的变量可以和方法级别的变量同名,但是在使用改变量的时候的时候遵循就近原则,通常是使用方法级别的变量.
如果想要使用类级别的变量可以用类名.变量名使用该变量
class Program
{
static int j = 10;
static void Main(string[] args)
{
int j = 20;
Console.WriteLine(j);//输出结果为20
Console.WriteLine(Program.j);//输出结果为10,类级别的变量.
Console.ReadKey();
}
}