日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

C#速成

系統(tǒng) 3239 0
原文出處:http: // www.codeguru.com/cs_syntax/CSharp.html
原作者:AishaIkram
在一些術(shù)語(yǔ)上我盡量做到與MSDN的中文資料所述術(shù)語(yǔ)保持一致

使用環(huán)境:.NET,C#,WinXP,Win
2000

緒論
C#是這樣的一種語(yǔ)言,具有C
++ 的特點(diǎn),象Java一樣的編程風(fēng)格,并且象Basic一樣的快速開(kāi)發(fā)模型。如果你已經(jīng)知道了C ++ ,本文會(huì)在不到一個(gè)小時(shí)的時(shí)間內(nèi)讓你迅速掌握C#的語(yǔ)法。熟悉Java的括會(huì)更好,因?yàn)镴ava的程序結(jié)構(gòu)、打包(Packages)和垃圾收集的概念有助于你更快的了解C#。因此在討論C#的構(gòu)造時(shí),我會(huì)假定你了解C ++

本文會(huì)討論C#語(yǔ)言的構(gòu)造與特點(diǎn),同時(shí)會(huì)采取簡(jiǎn)潔的和你能理解的方式使用些代碼示例,我們會(huì)盡量讓你能稍微看看這些代碼就能理解這些概念。

注意:本文不是為C#高手(C#gurus)所寫(xiě).這是針對(duì)在C#學(xué)習(xí)上還是初學(xué)者的文章。

下面是將要討論的C#問(wèn)題的目錄:

程序結(jié)構(gòu)
命名空間
數(shù)據(jù)類(lèi)型
變量
運(yùn)算符和表達(dá)式
枚舉
語(yǔ)句(Statements)
類(lèi)(Classes)和結(jié)構(gòu)(Structs)
修飾符(Modifiers)
屬性(Properties)
接口(Interfaces)
方法參數(shù)(FunctionParameters)
數(shù)組(Arrays)
索引器(Indexers)
裝箱及拆箱操作
委托(Delegates)
繼承和多態(tài)

下面的內(nèi)容將不會(huì)在被討論之列:

C
++ 與C#誰(shuí)更通用
諸如垃圾回收、線程以及文件處理等概念
數(shù)據(jù)的類(lèi)型轉(zhuǎn)換
異常處理
.NET庫(kù)

-------------------
程序結(jié)構(gòu)
-------------------
這一點(diǎn)象C
++ ,C#是一種對(duì)大小寫(xiě)字母敏感的語(yǔ)言,分號(hào)“;”是語(yǔ)句間的分隔符。與C ++ 不同的是,C#當(dāng)中聲明代碼文件(頭文件)與實(shí)現(xiàn)代碼文件(cpp文件)不是獨(dú)立存在的,所有代碼(類(lèi)聲明和類(lèi)實(shí)現(xiàn))都位于一個(gè)擴(kuò)展名為cs的文件內(nèi)。

讓我們瞧瞧C#當(dāng)中的Helloworld程序是怎樣的。

using System;

namespace MyNameSpace

{

class HelloWorld

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

}


}


在C#當(dāng)中的每樣?xùn)|西都被封裝到一個(gè)類(lèi)中,C#的類(lèi)又被封裝到一個(gè)命名空間當(dāng)中(就象一個(gè)文件夾中的文件)。類(lèi)似于C
++ ,main方法是你的程序的入口點(diǎn)。C ++ 的main函數(shù)調(diào)用名稱(chēng)是 " main " ,而C#的main函數(shù)是以大寫(xiě)字母M為起點(diǎn)的名稱(chēng)是 " Main "

沒(méi)有必要把分號(hào)分隔符放在類(lèi)語(yǔ)句塊或者結(jié)構(gòu)定義語(yǔ)句塊后。這在C
++ 當(dāng)中被要求,但在C#當(dāng)中卻不是。

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

現(xiàn)在思考這樣的一個(gè)問(wèn)題,你想從某些別的類(lèi)的命名空間當(dāng)中來(lái)訪問(wèn)HelloWorld這個(gè)類(lèi)該如何操作。
這有一個(gè)例子:

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

}

}


現(xiàn)在,從你的HelloWorld類(lèi)里你能象這樣去訪問(wèn)上面的這個(gè)AnotherNameSpace的命名空間:

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

}

}


在.NET庫(kù)當(dāng)中,System是位于頂層的命名空間,別的命名空間都存在這個(gè)命名空間之下。默認(rèn)狀態(tài)下,存在一個(gè)全局的命名空間,因此一個(gè)在命名空間外定義的類(lèi)將直接在這個(gè)全局命名空間之下;因此,你能在沒(méi)有任何點(diǎn)限定符的情況下訪問(wèn)這個(gè)類(lèi)。

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

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

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

與C
++ 不同,C#變量被訪問(wèn)之前必須被初始化;否則編譯時(shí)會(huì)報(bào)錯(cuò)。因此,訪問(wèn)一個(gè)未初始化變量是不可能的事。
C#中你不會(huì)訪問(wèn)到一個(gè)不確定的指針。(譯者注:嚴(yán)格說(shuō)起來(lái)C#已經(jīng)把指針概念異化,限制更嚴(yán)格。所以有些資料上會(huì)說(shuō)C#取消了指針概念)
一個(gè)超出數(shù)組邊界的表達(dá)式是不可訪問(wèn)的。
C#中沒(méi)有全局的的變量或全局函數(shù),全局方式的操作是通過(guò)靜態(tài)函數(shù)和靜態(tài)變量來(lái)實(shí)現(xiàn)的。


-------------------
數(shù)據(jù)類(lèi)型
-------------------
所有C#數(shù)據(jù)類(lèi)型都派生自基類(lèi)Object。這里有兩類(lèi)數(shù)據(jù)類(lèi)型:

基本型
/ 內(nèi)置型用戶自定義型

下面一個(gè)C#內(nèi)置類(lèi)型列表:

類(lèi)型字節(jié)數(shù)解釋
byte 1 無(wú)符號(hào)字節(jié)型
sbyte 1 有符號(hào)字節(jié)型
short 2 有符號(hào)短字節(jié)型
ushort 2 無(wú)符號(hào)短字節(jié)型
int 4 有符號(hào)整型
uint 4 無(wú)符號(hào)整型
long 8 有符號(hào)長(zhǎng)整型
ulong 8 無(wú)符號(hào)長(zhǎng)整型
float 4 浮點(diǎn)數(shù)
double 8 雙精度數(shù)
decimal 8 固定精度數(shù)
string unicode字串型
char unicode字符型
bool 真假布爾型

注意:C#當(dāng)中的類(lèi)型范圍與C
++ 有所不同;例如,C ++ 的long型是4個(gè)字節(jié),而在C#當(dāng)中是8個(gè)字節(jié)。同樣地,bool型和string型都不同于C ++ 。bool型只接受true和false兩種值。不接受任何整數(shù)類(lèi)型。

用戶定義類(lèi)型包括:

類(lèi)類(lèi)型(
class )
結(jié)構(gòu)類(lèi)型(
struct )
接口類(lèi)型(
interface )

數(shù)據(jù)類(lèi)型的內(nèi)存分配形式的不同又把它們分成了兩種類(lèi)型:

值類(lèi)型(valueTypes)
引用類(lèi)型(ReferenceTypes)

值類(lèi)型:
值類(lèi)型數(shù)據(jù)在棧中分配。他們包括:所有基本或內(nèi)置類(lèi)型(不包括string類(lèi)型)、結(jié)構(gòu)類(lèi)型、枚舉類(lèi)型(
enum type)

引用類(lèi)型:
引用類(lèi)型在堆中分配,當(dāng)它們不再被使用時(shí)將被垃圾收集。它們使用new運(yùn)算符來(lái)創(chuàng)建,對(duì)這些類(lèi)型而言,不存在C
++ 當(dāng)中的delete操作符,根本不同于C ++ 會(huì)顯式使用delete這個(gè)運(yùn)算符去釋放創(chuàng)建的這個(gè)類(lèi)型。C#中,通過(guò)垃圾收集器,這些類(lèi)型會(huì)自動(dòng)被收集處理。

引用類(lèi)型包括:類(lèi)類(lèi)型、接口類(lèi)型、象數(shù)組這樣的集合類(lèi)型類(lèi)型、字串類(lèi)型、枚舉類(lèi)型

枚舉類(lèi)型與C
++ 當(dāng)中的概念非常相似。它們都通過(guò)一個(gè)enum關(guān)鍵字來(lái)定義。

示例:

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


類(lèi)類(lèi)型與結(jié)構(gòu)類(lèi)型的比較
除了在內(nèi)存分配形式上外,類(lèi)與結(jié)構(gòu)的概念完全與C
++ 相同。類(lèi)的對(duì)象被分配在堆中,并且通過(guò)new來(lái)創(chuàng)建,結(jié)構(gòu)也是被new創(chuàng)建但卻被分配在棧當(dāng)中。C#當(dāng)中,結(jié)構(gòu)型適于快速訪問(wèn)和擁有少量成員的數(shù)據(jù)類(lèi)型。如果涉及量較多,你應(yīng)該創(chuàng)建一個(gè)類(lèi)來(lái)實(shí)現(xiàn)他。
(譯者注:這與堆和棧內(nèi)存分配結(jié)構(gòu)的特點(diǎn)有關(guān)。簡(jiǎn)而言之,棧是一種順序分配的內(nèi)存;堆是不一定是連續(xù)的內(nèi)存空間。具體內(nèi)容需要大家參閱相關(guān)資料)

示例:

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
++ 面象對(duì)象的方式,你就一定有一個(gè)屬性的概念。在上面示例當(dāng)中,以C ++ 的觀點(diǎn)來(lái)看,Data類(lèi)的屬性就是day、month和year。用C#方式,你可以把它們寫(xiě)成Get和Set方法。C#提供了一個(gè)更方便、簡(jiǎn)單、直接的方式來(lái)訪問(wèn)屬性。

因此上面的類(lèi)可以被寫(xiě)成:

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

set {
http://www.cnblogs.com/Images/OutliningIndicators/InBloc
分享到:
評(píng)論

C#速成


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 镇江市| 科技| 巴林左旗| 金堂县| 陵川县| 石屏县| 皋兰县| 荣成市| 太仓市| 乌苏市| 文水县| 南安市| 赞皇县| 无棣县| 广西| 宿州市| 承德市| 彭山县| 镇宁| 江源县| 信宜市| 客服| 宝应县| 富顺县| 正阳县| 荔浦县| 衡东县| 湖北省| 平顶山市| 定陶县| 瑞安市| 含山县| 牙克石市| 宿州市| 喀喇| 叶城县| 嘉禾县| 凤阳县| 牟定县| 连云港市| 渭源县|