C#速成(之一) (轉)

amyz發表於2007-11-25
C#速成(之一) (轉)[@more@]

在一些術語上我儘量做到與MSDN的中文資料所述術語保持一致

標題:速成(Quick C#)

--------------------------------------------------------------------------------
供稿 by Aisha Ikram.
使用環境:, C#, , Win 2000

緒論

C#是這樣的一種語言,具有C++的特點,象一樣的風格, 並且象Basic一樣的開發模型。如果你已經知道了C++,本文會在不到一個小時的時間內讓你迅速掌握C#的語法。熟悉Java的括會更好,因為Java的結構、打包(Packages)和垃圾收集的概念有助於你更快的瞭解C#。因此在討論C#的構造時,我會假定你瞭解C++。

本文會討論C#語言的構造與特點,同時會採取簡潔的和你能理解的方式使用些程式碼示例,我們會盡量讓你能稍微看看這些程式碼就能理解這些概念。

注意:本文不是為C#高手(C# gurus)所寫. 這是針對在C#學習上還是初學者的文章。

下面是將要討論的C#問題的目錄:

程式結構
名稱空間
資料型別
變數
運算子和
列舉
語句(Statements )
類(Classes)和結構(Structs)
修飾符(Modifiers)
屬性(Properties)
介面(Interfaces)
方法引數(Function Parameters)
陣列(Arrays)
器(Indexers)
裝箱及拆箱操作
委託(Delegates)
繼承和多型

下面的內容將不會在被討論之列:

C++與C#誰更通用
諸如垃圾回收、執行緒以及處理等概念
資料的型別轉換
異常處理
.NET庫

-------------------
程式結構
-------------------
這一點象C++,C#是一種對大小寫字母敏感的語言,分號“;”是語句間的分隔符。與C++不同的是,C#當中宣告程式碼檔案(標頭檔案)與實現程式碼檔案(cpp檔案)不是獨立存在的,所有程式碼(類宣告和類實現)都位於一個副檔名為cs的檔案內。

讓我們瞧瞧C#當中的 Hello world 程式是怎樣的。

using System;

namespace MyNameSpace

{

class HelloWorld

{
  static void Main(string[] args)
  {
  Console.WriteLine ("Hello World");
  }
}}

在C#當中的每樣東西都被封裝到一個類中,C#的類又被封裝到一個名稱空間當中(就象一個資料夾中的檔案)。類似於 C++,main方法是你的程式的入口點。C++的main名稱是"main",而C#的main函式是以大寫字母M為起點的名稱是"Main"。

沒有必要把分號分隔符放在類語句塊或者結構定義語句塊後。這在C++當中被要求,但在C#當中卻不是。

-------------------
名稱空間
-------------------
每一個類都被包裝進一個名稱空間。名稱空間的概念與C++的完全相同,但在C#當中使用名稱空間的頻率較C++還高。你可以使用點限定符(dot qulifier)訪問一個類。在上面的hello world程式當中MyNameSpace就是一個名稱空間。

現在思考這樣的一個問題,你想從某些別的類的名稱空間當中來訪問HelloWorld這個類該如何操作。
這有一個例子:

using System;
namespace AnotherNameSpace
{
  class AnotherClass
  {
  public void Func()
  {
  Console.WriteLine ("Hello World");
  }
  }
}

現在,從你的HelloWorld類裡你能象這樣去訪問上面的這個AnotherNameSpace的名稱空間:

using System;
using AnotherNameSpace;  // you will add this using statement
namespace MyNameSpace
{
class HelloWorld
{
  static void Main(string[] args)
  {
  AnotherClass obj = new AnotherClass();
  obj.Func();
  }
}
}

在.NET庫當中,System是位於頂層的名稱空間,別的名稱空間都存在這個名稱空間之下。預設狀態下,存在一個全域性的名稱空間,因此一個在名稱空間外定義的類將直接在這個全域性名稱空間之下;因此,你能在沒有任何點限定符的情況下訪問這個類。

你也可以象下面這樣定義巢狀的名稱空間。

Using
C++當中的"#include"指示被C#的"using"關鍵字取代,它後面跟著一個名稱空間的名字。正如上面的"using System"。"System"是別的所有被封裝的名稱空間和類中最底層的名稱空間。所有的基類都是System名稱空間內的類派生的。

-------------------
變數
-------------------
除以下並別外,C#當中的變數幾乎與C++同:

與C++不同,C#變數被訪問之前必須被初始化;否則編譯時會報錯。因此,訪問一個未初始化變數是不可能的事。
C#中你不會訪問到一個不確定的指標。(譯者注:嚴格說起來C#已經把指標概念異化,限制更嚴格。所以有些資料上會說C#取消了指標概念)
一個超出陣列邊界的表示式是不可訪問的。
C#中沒有全域性的的變數或全域性函式,全域性方式的操作是透過靜態函式和靜態變數來實現的。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-984531/,如需轉載,請註明出處,否則將追究法律責任。

相關文章