亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

C#速成

系統 2802 0
原文出處:http: // www.codeguru.com/cs_syntax/CSharp.html
原作者:AishaIkram
在一些術語上我盡量做到與MSDN的中文資料所述術語保持一致

使用環境:.NET,C#,WinXP,Win
2000

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

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

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

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

程序結構
命名空間
數據類型
變量
運算符和表達式
枚舉
語句(Statements)
類(Classes)和結構(Structs)
修飾符(Modifiers)
屬性(Properties)
接口(Interfaces)
方法參數(FunctionParameters)
數組(Arrays)
索引器(Indexers)
裝箱及拆箱操作
委托(Delegates)
繼承和多態

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

C
++ 與C#誰更通用
諸如垃圾回收、線程以及文件處理等概念
數據的類型轉換
異常處理
.NET庫

-------------------
程序結構
-------------------
這一點象C
++ ,C#是一種對大小寫字母敏感的語言,分號“;”是語句間的分隔符。與C ++ 不同的是,C#當中聲明代碼文件(頭文件)與實現代碼文件(cpp文件)不是獨立存在的,所有代碼(類聲明和類實現)都位于一個擴展名為cs的文件內。

讓我們瞧瞧C#當中的Helloworld程序是怎樣的。

using System;

namespace MyNameSpace

{

class HelloWorld

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

}


}


在C#當中的每樣東西都被封裝到一個類中,C#的類又被封裝到一個命名空間當中(就象一個文件夾中的文件)。類似于C
++ ,main方法是你的程序的入口點。C ++ 的main函數調用名稱是 " main " ,而C#的main函數是以大寫字母M為起點的名稱是 " Main " 。

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

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

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

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

}

}


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

using System;
using AnotherNameSpace; // youwilladdthisusingstatement
namespace MyNameSpace
{
class HelloWorld
{
static void Main( string []args)
{
AnotherClassobj
= new AnotherClass();
obj.Func();
}

}

}


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

你也可以象下面這樣定義嵌套的命名空間。

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

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

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


-------------------
數據類型
-------------------
所有C#數據類型都派生自基類Object。這里有兩類數據類型:

基本型
/ 內置型用戶自定義型

下面一個C#內置類型列表:

類型字節數解釋
byte 1 無符號字節型
sbyte 1 有符號字節型
short 2 有符號短字節型
ushort 2 無符號短字節型
int 4 有符號整型
uint 4 無符號整型
long 8 有符號長整型
ulong 8 無符號長整型
float 4 浮點數
double 8 雙精度數
decimal 8 固定精度數
string unicode字串型
char unicode字符型
bool 真假布爾型

注意:C#當中的類型范圍與C
++ 有所不同;例如,C ++ 的long型是4個字節,而在C#當中是8個字節。同樣地,bool型和string型都不同于C ++ 。bool型只接受true和false兩種值。不接受任何整數類型。

用戶定義類型包括:

類類型(
class )
結構類型(
struct )
接口類型(
interface )

數據類型的內存分配形式的不同又把它們分成了兩種類型:

值類型(valueTypes)
引用類型(ReferenceTypes)

值類型:
值類型數據在棧中分配。他們包括:所有基本或內置類型(不包括string類型)、結構類型、枚舉類型(
enum type)

引用類型:
引用類型在堆中分配,當它們不再被使用時將被垃圾收集。它們使用new運算符來創建,對這些類型而言,不存在C
++ 當中的delete操作符,根本不同于C ++ 會顯式使用delete這個運算符去釋放創建的這個類型。C#中,通過垃圾收集器,這些類型會自動被收集處理。

引用類型包括:類類型、接口類型、象數組這樣的集合類型類型、字串類型、枚舉類型

枚舉類型與C
++ 當中的概念非常相似。它們都通過一個enum關鍵字來定義。

示例:

enum Weekdays
{
Saturday,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday
}


類類型與結構類型的比較
除了在內存分配形式上外,類與結構的概念完全與C
++ 相同。類的對象被分配在堆中,并且通過new來創建,結構也是被new創建但卻被分配在棧當中。C#當中,結構型適于快速訪問和擁有少量成員的數據類型。如果涉及量較多,你應該創建一個類來實現他。
(譯者注:這與堆和棧內存分配結構的特點有關。簡而言之,棧是一種順序分配的內存;堆是不一定是連續的內存空間。具體內容需要大家參閱相關資料)

示例:

struct Date
{
int day;
int month;
int year;
}


class Date
{
int day;
int month;
int year;
string weekday;
string monthName;
public int GetDay()
{
return day;
}

public int GetMonth()
{
return month;
}

public int GetYear()
{
return year;
}

public void SetDay( int Day)
{
day
= Day;
}

public void SetMonth( int Month)
{
month
= Month;
}

public void SetYear( int Year)
{
year
= Year;
}

public bool IsLeapYear()
{
return (year / 4 == 0 );
}

public void SetDate( int day, int month, int year)
{
}


}




-------------------
屬性
-------------------
如果你熟悉C
++ 面象對象的方式,你就一定有一個屬性的概念。在上面示例當中,以C ++ 的觀點來看,Data類的屬性就是day、month和year。用C#方式,你可以把它們寫成Get和Set方法。C#提供了一個更方便、簡單、直接的方式來訪問屬性。

因此上面的類可以被寫成:

using System;
class Date
{
public int Day {
get {
return day;
}

set {
http://www.cnblogs.com/Images/OutliningIndicators/InBloc
分享到:
評論

C#速成


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一区二区三区在线免费观看视频 | 精品久久洲久久久久护士免费 | 免费看片aⅴ免费大片 | 色综合成人丁香 | 9191精品国产免费不久久 | 国产精品一区二区欧美视频 | 欧美日韩国产精品 | 欧美啊v| 亚洲欧美日韩国产一区二区精品 | 久久免费区一区二区三波多野 | 奇米影视第四色在线 | 狠狠色丁香久久综合五月 | 久久一日本道色综合久久 | 奇米色在线 | 欧美一区中文字幕 | 日本高清不卡二区 | 一级特级aa欧美毛片 | 亚洲国产成人精品区 | 尹人久久| 国内精品久久久久久久久蜜桃 | 久久亚洲欧美 | 亚洲精品成人一区二区aⅴ 亚洲精品成人一区二区www | 一区二区三区四区日韩 | 国内精品视频成人一区二区 | 九色 91| 色狠狠色综合久久8狠狠色 色狠狠婷婷97 | 久久免费视屏 | 亚洲精品成人一区二区 | 4hu四虎永久免在线视看 | 亚洲精品高清视频 | 毛片免| 性欧美videos高清喷水 | 中文字幕在线不卡视频 | 欧美成年黄网站色高清视频 | 欧美一级高清片欧美国产欧美 | 中文字幕一区二区日产乱码 | 成人亚洲性情网站www在线观看 | 亚洲国产一区二区三区综合片 | 交换国产精品视频一区 | 国产精品永久免费视频观看 | 国产美女久久 |