從這一節開始,我們開始復習C#基礎知識,涉及變量聲明,變量的初始化,作用域,C#的預定義數據 類型,C#中的循環和條件語句,枚舉,命名空間,Main()方法,C#標識符和關鍵字,C#編碼的規范和約定 ,等等。
首先,我們還是從非常經典的“Hello word !”開始。
我們新建一個.txt文件,並且更改為 test.cs 。然後鍵入以下內容。
using System;
namespace gosoa.com
{
class MyFirstClass
{
static void Main()
{
Console.WriteLine("Hello world !");
}
}
}
然後 打開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;例如下面的代碼:
using System;
namespace gosoa.com
{
class MyFirstClass
{
static int y;
static void Main()
{
Console.WriteLine(y);
}
}
}
我們在類中聲明了一個變量y,然後輸出該變量,編譯並運行後我們會看到輸出的結果是0 。
B、方法中的變量,必須顯式的初始化,否則在使用該變量的時候會出錯。如下面的代碼:在編譯的時 候就會報錯。我們需要把int y ; 顯式的初始化
,才會通過編譯。比如我們初始化y的值為10 ,即 int y=10; 便會通過編譯。
using System;
namespace gosoa.com
{
class MyFirstClass
{
static void Main()
{
int y;
Console.WriteLine(y);
}
}
}
1.3 變量的作用域
變量的作用域是指可以使用該變量的代碼區域。一般情況下,確定作用域有如下規則。
A、只要變量所屬的類在某個作用域內,其字段(也叫做 成員變量)也在該作用域中。
B、局部變量存在於聲明該變量的塊語句或方法結束的大括號之前的作用域。
C、在for、while 循環中聲明的變量,只存在於該循環體內。
在變量使用中,可能產生命名沖突的情況,首先,我們來看下局部變量的作用域沖突。如下代碼示例 :
using System;
namespace gosoa.com
{
class MyFirstClass
{
static void Main()
{
for(int i=0;i<10;i++)
{
Console.WriteLine(i);
}
for(int i=0;i<20;i++)
{
Console.WriteLine(i);
}
}
}
}
兩個循環中都使用了i ,但都可以正常輸出,因為每個i的作用域都在其對應的兩個循環體內。
再看下例代碼:
using System;
namespace gosoa.com
{
class MyFirstClass
{
static void Main()
{
int j=5;
for(int i=0;i<10;i++)
{
int j=20;
Console.WriteLine(i+j);
}
}
}
}
這段代碼編譯就會出錯,因為第一個j 在作用域是整個Main()方法,這樣,其在循環體內也是有效的 。於是,在循環體內定義一個同名的j時,就會報錯了。
我們再看如下示例代碼,
using System;
namespace gosoa.com
{
class MyFirstClass
{
int j=30;
static void Main()
{
int j=20;
int i=5;
Console.WriteLine(i+j);
}
}
}
在這段代碼中,第一個j的作用域是整個類,也就是類的字段,第二個j的聲明會替代第一個j,所以該 程序會輸出25.
1.4 常量
在聲明變量時,在變量前面加上const 關鍵字就可以把該變量指定為一個常量。
在這裡需要注意幾點,
A 常量必須在聲明的時候就初始化,而且其賦值後就不能再更改了。
B 常量總是靜態(static)的,不必在聲明常量時添加static關鍵字。