從這一節開始,我們開始複習C#基礎知識,涉及變數聲明,變數的初始化,範圍,C#的預定義資料類型,C#中的迴圈和條件陳述式,枚舉,命名空間,Main()方法,C#標識符和關鍵字,C#編碼的規範和約定,等等。
首先,我們還是從非常經典的“Hello word !”開始。
我們建立一個.txt檔案,並且更改為 test.cs 。然後鍵入以下內容。
Code
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;例如下面的代碼:
Code
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; 便會通過編譯。
Code
using System;
namespace gosoa.com
{
class MyFirstClass
{
static void Main()
{
int y;
Console.WriteLine(y);
}
}
}
1.3 變數的範圍
變數的範圍是指可以使用該變數的代碼地區。一般情況下,確定範圍有如下規則。
A、 只要變數所屬的類在某個範圍內,其欄位(也叫做 成員變數)也在該範圍中。
B、 局部變數存在於聲明該變數的塊語句或方法結束的大括弧之前的範圍。
C、 在for、 while 迴圈中聲明的變數,只存在於該迴圈體內。
在變數使用中,可能產生命名衝突的情況,首先,我們來看下局部變數的範圍衝突。如下程式碼範例:
Code
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的範圍都在其對應的兩個迴圈體內。
再看下例代碼:
Code
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時,就會報錯了。
我們再看如下範例程式碼,
Code
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關鍵字。