C#,深入淺出全接觸(二)
發(fā)布時(shí)間:2008-06-10 閱讀數(shù): 次 來源:網(wǎng)樂原科技
五、C# 編輯器
編寫C#程序可以在文本編輯器中進(jìn)行,或者在集成開發(fā)環(huán)境Visual Studio中進(jìn)行。市場上還有一些第三方編輯器,其中一些是免費(fèi)的。更多信息請查看這里。
六、C#的程序結(jié)構(gòu)
一個(gè)C#程序包含一個(gè)類,這個(gè)類中至少有一個(gè)公用的靜態(tài)方法Main,這個(gè)方法對程序進(jìn)行初始化并終止程序。在Main方法中創(chuàng)建子對象、執(zhí)行方法并實(shí)現(xiàn)軟件的邏輯處理。下面是一個(gè)典型的微型C#例程:
using System;
class MyFirstApp
{
static int Main(String[] args)
{
System.Console.WriteLine ("Hello .NET");
return 1;
}
}
在C#中,要使用下面的聲明來引入外部定義,而不是用象C++中的#include:
using System;
using System.Data;
然后,使用C#編譯器csc.exe編譯代碼。假定將前面的代碼保存為文件hello.cs,使用以下命令:
csc hello.cs
結(jié)果就生成了hello.exe,它向控制臺(tái)輸出窗口寫入信息 "Hello .NET"。
盡管編譯后的結(jié)果文件包含.exe后綴,但hello.exe卻不是一個(gè)真正的、明確的CPU代碼段。實(shí)際上,它包含了.NET字節(jié)代碼。當(dāng)啟動(dòng)hello.exe時(shí),CLR 將提取編譯器寫入代碼中的重要元數(shù)據(jù)。接著,一個(gè)叫做 Just-In-Time 編譯器的模塊將代碼映射到特定的 CPU中,開始實(shí)際的執(zhí)行過程。
七、C# 和名稱空間
實(shí)際中的 C#程序通常包含多個(gè)文件,其中每個(gè)文件都可以包含一個(gè)或多個(gè)名稱空間。一個(gè)名稱空間就是一個(gè)名字,它向編譯器描繪出一些軟件實(shí)體,如類、界面、枚舉以及嵌入的名稱空間。名稱空間和數(shù)據(jù)類型一樣必須有唯一的名稱。在一個(gè)C#程序中,可以通過一個(gè)元素的完整資格名稱來識(shí)別它,這個(gè)資格名稱表明出層次關(guān)系。例如,System.String是 .NET String類型完整的資格名稱。但是為了簡化代碼起見,只要聲明正在使用System名稱空間:
using System;
就可以使用一個(gè)相對名稱如String來作為完整名稱的同義詞,而最后依然代表 System.String。
通過使用namesapce關(guān)鍵字,我們還可以將C#程序或者類包裹在自身的名稱空間中,比如:
namespace MyOwn
{
using System; // for String
class MyFirstApp
{
static int Main(String[] args)
{
System.Console.WriteLine ("Hello .NET");
return 1;
}
}
}
名稱空間 MyOwn 是全局名稱空間的一部分。調(diào)用它不需要再使用前綴,因?yàn)槠渫暾Y格名稱就是簡單的MyOwn。定義一個(gè)名稱空間是保持公共名稱唯一性的一個(gè)途徑。實(shí)際上,如果兩個(gè)類的名稱發(fā)生沖突,但只要它們分別屬于不同的名稱空間,兩個(gè)類仍然是各自唯一的。
八、C#中一個(gè)經(jīng)典例程的編寫與編譯
1、編寫代碼
“Hello World”幾乎是學(xué)習(xí)任何一門編程語言都要涉及的第一個(gè)例程。下面也讓我們用C#完成這個(gè)工作。在上面提到的任意一個(gè)C#編輯器中(比如寫字板),鍵入以下代碼:
using System;class MyClass { static void Main() { Console.WriteLine("Hello World!"); }}
然后保存為文件myclass.cs。
2、編譯程序
注意:C#編譯器要要求至少一個(gè)自變量,比如文件名。假設(shè)你的C# 文件名是myclass.cs,現(xiàn)在用命令行程序csc.exe來編譯上面的myclass.cs文件:
csc myclass.cs
于是,C# 編譯器在工程文件的bin 目錄下生成了一個(gè)myclass.exe文件。運(yùn)行這個(gè) exe,看輸出是什么。
3、代碼含義
下面我們逐行看看這些代碼的含義:
程序的第一行是using System。為什么要using System呢?因?yàn)镾ystem是存儲(chǔ)系統(tǒng)類的名稱空間,程序中用來在控制臺(tái)上顯示輸出的Console(控制臺(tái))類就是在System 名稱空間中定義的。
下一行是class MyClass。C# 中的class關(guān)鍵字用于創(chuàng)建一個(gè)新類。 每個(gè)類都有一個(gè)靜態(tài)的void Main() 函數(shù),這個(gè)函數(shù)就是一個(gè) C# 程序的入口。
Console 類的WriteLine方法負(fù)責(zé)向控制臺(tái)輸出文本信息。