C#基础(三)(变量的声明,变量的作用域以及常量)
从这一节开始,我们开始复习C#基础知识,涉及变量声明,变量的初始化,作用域,C#的预定义数据类型,C#中的循环和条件语句,枚举,命名空间,Main()方法,C#标识符和关键字,C#编码的规范和约定,等等。
首先,我们还是从非常经典的“Hello word !”开始。
我们新建一个.txt文件,并且更改为 test.cs 。然后键入以下内容。
Code
然后 打开C#命令行编译器,编译这个文件。也就是在C#命令行中输入
csc test.cs
编译成功后会在存放该文件的目录,生成一个test.exe文件。我们继续在C#命令行中输入test.exe 就会运行test.exe文件,输出 Hello World !(说明:这里的C#命令行在 开始-程序-Microsoft .NET Framework SDK v2.0-SDK命令提示)
在上个例子中,我们简单说明几个该注意的事项,首先,第一句using System; 是用来引入System基类。和java的import相似,这是C#的基类,C#的所有工作都依赖于该基类。第二句 namespace gosoa.com 是我们之前提到的命名空间,命名空间为gosoa.com,当然,你可以命名为任意名称。但,为了避免冲突,我们一般采用自己公司的域名做为命名空间。第三句,class MyFirstClass 是声明一个名称为MyFirstClass的类。第四句,static void
Main() 是程序的主方法,注意,这里的Main() 方法首字母大写喔。第五句,Console.WriteLine("Hello world !"); 就是输出Hello world ,
Console.WriteLine 就是基类中的一个方法。
在C#中,和其他很多语言(C,JAVA等)一样,句子末尾以分号”;”结束,程序代码都放在{}一对大括号中。
一、变量
1.1 变量的声明
C#中变量的声明我们以实例来说明,例如,int i; 该句声明了一个 int (整型) 变量 i 。再如,string str; 这句声明了一个string(字符串类型)的
变量 str 。
1.2 变量初始化
C#编译器需要每个变量在有了初始值之后才能使用该变量。
在C#变量初始化时有两点需要注意,
A 、变量是类或者结构中的字段,如果没有显式的初始化,在默认状态下,创建这些变量时,其初始值就是0;例如下面的代码:
Code
我们在类中声明了一个变量y,然后输出该变量,编译并运行后我们会看到输出的结果是0 。
B、方法中的变量,必须显式的初始化,否则在使用该变量的时候会出错。如下面的代码:在编译的时候就会报错。我们需要把int y ; 显式的初始化
,才会通过编译。比如我们初始化y的值为10 ,即 int y=10; 便会通过编译。
Code
1.3 变量的作用域
变量的作用域是指可以使用该变量的代码区域。一般情况下,确定作用域有如下规则。
A、 只要变量所属的类在某个作用域内,其字段(也叫做 成员变量)也在该作用域中。
B、 局部变量存在于声明该变量的块语句或方法结束的大括号之前的作用域。
C、 在for、 while 循环中声明的变量,只存在于该循环体内。
在变量使用中,可能产生命名冲突的情况,首先,我们来看下局部变量的作用域冲突。如下代码示例:
Code
两个循环中都使用了i ,但都可以正常输出,因为每个i的作用域都在其对应的两个循环体内。
再看下例代码:
Code
这段代码编译就会出错,因为第一个j 在作用域是整个Main()方法,这样,其在循环体内也是有效的。于是,在循环体内定义一个同名的j时,就会报错了。
我们再看如下示例代码,
Code
在这段代码中,第一个j的作用域是整个类,也就是类的字段,第二个j的声明会替代第一个j,所以该程序会输出25.
1.4 常量
在声明变量时,在变量前面加上const 关键字就可以把该变量指定为一个常量。
在这里需要注意几点,
A 常量必须在声明的时候就初始化,而且其赋值后就不能再更改了。
B 常量总是静态(static)的,不必在声明常量时添加static关键字。