最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#語言初級入門介紹

 更新時(shí)間:2008年04月06日 22:38:35   作者:  
C#讀作“C sharp”,它是Microsoft開發(fā)的一種新語言,結(jié)合了C/C++的強(qiáng)大功能和Visual Basic的易用性。從最初的語言規(guī)范即可看出,C#無論在語法、豐富的Web開發(fā)支持還是自動(dòng)化的內(nèi)存管理上都和Java非常相似。因此,如果你曾經(jīng)用過C++或者Java,再來學(xué)習(xí)C#應(yīng)該是相當(dāng)輕松的。
 
本文的目的在于為尚未接觸過C#的程序員介紹這種編程語言。不論你以前是否用過C/C++或者Java,都可以從本文開始學(xué)習(xí)C#。本文的唯一假定是你具有某種類型的編程知識(shí)(如具有面向?qū)ο缶幊痰慕?jīng)驗(yàn)則更好,但并非必須),并擁有某種類型的C#編譯器。
最簡單的C#程序

首先我們來看標(biāo)準(zhǔn)的Hello World程序。用文本編輯器創(chuàng)建一個(gè)新文件HelloWorld.cs,把下面的代碼放入這個(gè)文件:


// 第一個(gè)c#程序

class HelloWorld {
static void Main() {
System.Console.WriteLine("Hello World!");
}
}

現(xiàn)在,在DOS命令窗口進(jìn)入保存HelloWorld.cs的目錄,然后執(zhí)行:


csc HelloWorld.cs

 

該命令編譯源代碼并生成HelloWorld.exe文件。運(yùn)行這個(gè)執(zhí)行文件就可以看到:
Hello World!

下面我們來分析一下這個(gè)例子。第一行代碼是一行注釋,由“//”開始。和C/C++以及Java一樣,“//”告訴編譯器忽略該行直至結(jié)尾為止的內(nèi)容。C#中的另外一種注釋方法是塊注釋。塊注釋由“”結(jié)束。

程序中第二個(gè)重要的地方是第四行Main()方法的聲明(static void Mian(){)。每一個(gè)C#程序都包含一個(gè)Main方法,它是程序執(zhí)行的起點(diǎn)和終點(diǎn)。另外還請注意,HelloWorld類的Main()方法定義成了靜態(tài)(static)方法。程序的Main方法永遠(yuǎn)不會(huì)是全局的,這意味著Main方法必須包含在類里面,如本例中Main()是在類HelloWorld里面(Main方法也可以包含到結(jié)構(gòu)里面,但一般它總是在類里面)。

程序中最后一個(gè)關(guān)鍵的地方是向控制臺(tái)輸出文本的代碼,即“System.Console.WriteLine("Hello World!");”。WriteLine是一個(gè)方法,定義于Console類。WriteLine()把文本輸出到標(biāo)準(zhǔn)輸出設(shè)備并換行。Console類包含在System名稱空間(類的集合)里面。如果你想避免用“System.Console”的方式來指出Console類的全稱,可以在文件的開頭加上“using System;”這行代碼,以后就可以直接寫出“Console.WriteLine("Hello World!");”。

下面這個(gè)例子示范如何創(chuàng)建和使用用戶定義的類以及如何創(chuàng)建動(dòng)態(tài)鏈接庫。利用文本編輯器創(chuàng)建兩個(gè)文件。第一個(gè)是Apple.cs,內(nèi)容如下:
public class Apple {

private string variety = "";

public Apple(string appleVariety) {
this.variety = appleVariety;
}

public void outputVariety() {
System.Console.WriteLine(variety);
}

}

 

第二個(gè)文件是Example2.cs,內(nèi)容如下:


class Example2 {

static void Main() {
Apple mac = new Apple("Macintosh ");
Apple gra = new Apple("Granny Smith");
Apple cor = new Apple("Cortland");
mac.outputVariety();
gra.outputVariety();
cor.outputVariety();
}
}

 

首先,我們定義了一個(gè)新的用戶定義類,名字為Apple。雖然Apple類并不一定要放到獨(dú)立的文件中,但把每個(gè)類都放到自己獨(dú)立的文件中是一個(gè)好的面向?qū)ο缶幊塘?xí)慣,有助于簡化組織和管理。我們?yōu)锳pple類的聲明加上了public修飾符(public class Apple),這樣其他類就可以創(chuàng)建Apple類的實(shí)例。

下一行代碼定義了實(shí)例變量variety。使用了修飾符private之后,只有在Apple類的內(nèi)部才可以直接訪問variety變量。這是一種常見的面向?qū)ο缶幊塘?xí)慣,稱為封裝。封裝之后,對象的工作細(xì)節(jié)對于對象的用戶來說就隱藏不可見了。你現(xiàn)在正使用的鍵盤就是封裝在現(xiàn)實(shí)世界中一個(gè)很好的例子。我們并不完全了解鍵擊如何發(fā)送到控制器(我們之中的大多數(shù)都不知道),但只要理解它的接口如何運(yùn)作就可以了。例如我們知道,打開文本編輯器,按下鍵盤上的“&”鍵,“&”字符就會(huì)出現(xiàn)在屏幕上。如果每一個(gè)人都必須了解鍵盤的工作細(xì)節(jié)而不是只要了解它的接口,我們之中不會(huì)有很多人使用它。

接下來的三行代碼是:


public Apple(string appleVariety) {
this.variety = variety;
}

 

這三行代碼定義了Apple類的構(gòu)造函數(shù)。類的構(gòu)造函數(shù)類似一個(gè)描述如何創(chuàng)建類實(shí)例的藍(lán)圖。我們能夠很容易地將構(gòu)造函數(shù)和類里面的其他方法區(qū)分開來,因?yàn)闃?gòu)造函數(shù)總是和類具有相同的名字。在本例中,類Apple的構(gòu)造函數(shù)有一個(gè)字符串參數(shù),這個(gè)參數(shù)值隨后被保存到實(shí)例變量variety。

Apple類的最后一個(gè)方法是outputVariety()。這個(gè)方法為訪問實(shí)例變量提供了接口,所以稱為存取方法(Accessor Method)。

下面我們來看Example2類。這個(gè)例子與前文例子的區(qū)別在于要?jiǎng)?chuàng)建并使用用戶定義類Apple的實(shí)例。我們用new操作符創(chuàng)建了三個(gè)Apple類的實(shí)例。創(chuàng)建類的實(shí)例時(shí),我們無需顯式地調(diào)用類的構(gòu)造函數(shù),new操作符將自動(dòng)為我們調(diào)用類的構(gòu)造函數(shù)。創(chuàng)建了三個(gè)Apple類的對象之后,我們依次調(diào)用這三個(gè)對象的outputVariety方法,由outputVariety方法輸出這三個(gè)對象里variety的值。

下面我們來編譯和運(yùn)行這個(gè)例子。首先我們要把Apple類編譯成動(dòng)態(tài)鏈接庫,命令如下:


csc /target:library Apple.cs

 

/target:library表示不要?jiǎng)?chuàng)建執(zhí)行文件,而是創(chuàng)建一個(gè).dll文件(即動(dòng)態(tài)鏈接庫)。所以,上面的命令將生成一個(gè)Apple.dll文件。

接下來我們編譯Example2.cs,編譯命令如下所示:


csc /reference:Apple.dll Example2.cs

 

現(xiàn)在我們得到了執(zhí)行文件Example2.exe。執(zhí)行這個(gè)文件可以在控制臺(tái)上看到如下輸出:


Macintosh
Granny Smith
Cortland

在這最后一個(gè)例子中,我們來看看C#的抽象和多態(tài)性。首先我們來定義一下這兩個(gè)新的術(shù)語。抽象(Abstract)通過從多個(gè)對象提取出公共部分并把它們并入單獨(dú)的抽象類中實(shí)現(xiàn)。在本例中我們將創(chuàng)建一個(gè)抽象類Shape(形狀)。每一個(gè)形狀都擁有返回其顏色的方法,不論是正方形還是圓形、長方形,返回顏色的方法總是相同的,因此這個(gè)方法可以提取出來放入父類Shape。這樣,如果我們有10個(gè)不同的形狀需要有返回顏色的方法,現(xiàn)在只需在父類中創(chuàng)建一個(gè)方法??梢钥吹绞褂贸橄笫沟么a更加簡短。

  在面向?qū)ο缶幊填I(lǐng)域中,多態(tài)性(Polymorphism)是對象或者方法根據(jù)類的不同而作出不同行為的能力。在下面這個(gè)例子中,抽象類Shape有一個(gè)getArea()方法,針對不同的形狀(圓形、正方形或者長方形)它具有不同的功能。

   下面是代碼:


public abstract class Shape {
protected string color;
public Shape(string color) {
this.color = color;
}
public string getColor() {
return color;
}
public abstract double getArea();
}

public class Circle : Shape {
private double radius;
public Circle(string color, double radius) : base(color) {
this.radius = radius;
}
public override double getArea() {
return System.Math.PI * radius * radius;
}
}

public class Square : Shape {
private double sideLen;
public Square(string color, double sideLen) : base(color) {
this.sideLen = sideLen;
}
public override double getArea() {
return sideLen * sideLen;
}
}

public class Example3
{
static void Main()
{
Shape myCircle = new Circle("orange", 3);
Shape myRectangle = new Rectangle("red", 8, 4);
Shape mySquare = new Square("green", 4);
System.Console.WriteLine("圓的顏色是" + myCircle.getColor()
+ "它的面積是" + myCircle.getArea() + ".");
System.Console.WriteLine("長方形的顏色是" + myRectangle.getColor()
+ "它的面積是" + myRectangle.getArea() + ".");
System.Console.WriteLine("正方形的顏色是" + mySquare.getColor()
+ "它的面積是" + mySquare.getArea() + ".");
}
}

我們創(chuàng)建的第一個(gè)類是Shape。這是一個(gè)抽象類,因?yàn)槲覀儾幌雱?chuàng)建這個(gè)類的實(shí)例,我們要?jiǎng)?chuàng)建的是它的派生類的實(shí)例。我們從所有的形狀(圓、長方形、正方形)提取出共同特征到Shape類。Shape類有一個(gè)實(shí)例變量color,它的變量聲明中帶有protected修飾符。protected修飾符表示這個(gè)變量只能在類的內(nèi)部或者該類的派生類中訪問。緊接這個(gè)變量聲明的就是Shape類的構(gòu)造函數(shù)和存取方法getColor(),這兩個(gè)方法都沒有什么新的東西。最后一個(gè)方法getArea()加上了abstract修飾符,這是因?yàn)槊恳环N不同的形狀都有不同的面積計(jì)算方法,因此這個(gè)方法必須由各種形狀自己來定義。

  接下來的三個(gè)類Circle、Rectangle和Square都從Shape類派生,它們都具有Shape所描述的特征。這可以從它們的定義中看出來,它們的聲明中都帶有“public class:Shape {”,這個(gè)“: Shape”就表示當(dāng)前的類從Shape類派生。由于這三個(gè)類都從Shape派生,它們自動(dòng)擁有Shape中定義的所有public或者protected實(shí)例變量,即Circle、 Rectangle和Square包含了實(shí)例變量color。

  每一個(gè)Sharp的派生類都有自己的構(gòu)造函數(shù),負(fù)責(zé)調(diào)用父類Shape的構(gòu)造函數(shù)設(shè)置公共的實(shí)例變量(color)以及設(shè)置自己特有的實(shí)例變量。例如“public Circle(string color, double radius) : base(color)”這個(gè)語句中,“: base(color)”就表示用參數(shù)color調(diào)用父類的構(gòu)造函數(shù)。

  最后我們來看一下getArea()方法,它是一個(gè)多態(tài)性的示范。所有形狀都有g(shù)etArea()方法,但是根據(jù)對象是圓、長方形還是正方形,具體調(diào)用的方法也不同。

  要運(yùn)行這個(gè)例子,先把所有文件保存到同一目錄,然后執(zhí)行下面的命令:


csc /target:library /out:Shapes.dll
Shapes.cs Circle.cs Rectangle.cs Square.cs

 

   然后執(zhí)行:


csc /reference:Shapes.dll Example3.cs

 

   現(xiàn)在,如果我們運(yùn)行Example3.exe,將得到如下輸出:


圓的顏色是orange它的面積是28.274333882308138.
正方形的顏色是green它的面積是16.
長方形的顏色是red 它的面積是32.

相關(guān)文章

  • 頁面包含的處理

    頁面包含的處理

    頁面包含的處理...
    2006-08-08
  • 詳解asp.net core 依賴注入

    詳解asp.net core 依賴注入

    這篇文章主要介紹了詳解asp.net core 依賴注入的相關(guān)知識(shí),文中講解非常詳細(xì),代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • ASP.NET?HttpRequest類用法

    ASP.NET?HttpRequest類用法

    這篇文章介紹了ASP.NET?HttpRequest類用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • 部署.Net6項(xiàng)目到docker

    部署.Net6項(xiàng)目到docker

    這篇文章介紹了部署.Net6項(xiàng)目到docker,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • 在ASP.NET 中實(shí)現(xiàn)單點(diǎn)登錄

    在ASP.NET 中實(shí)現(xiàn)單點(diǎn)登錄

    在ASP.NET 中實(shí)現(xiàn)單點(diǎn)登錄...
    2007-03-03
  • 為ABP框架添加基礎(chǔ)集成服務(wù)

    為ABP框架添加基礎(chǔ)集成服務(wù)

    這篇文章介紹了為ABP框架添加基礎(chǔ)集成服務(wù)的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • ASP.NET中Image控件使用詳解

    ASP.NET中Image控件使用詳解

    本文詳細(xì)介紹了Image控件的使用方法,用實(shí)例演示了Image控件的用法,希望對大家有所幫助。
    2016-04-04
  • ASP.NET Core基礎(chǔ)之請求處理管道

    ASP.NET Core基礎(chǔ)之請求處理管道

    這篇文章介紹了ASP.NET Core的請求處理管道,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • .Net創(chuàng)建型設(shè)計(jì)模式之原型模式(Prototype)

    .Net創(chuàng)建型設(shè)計(jì)模式之原型模式(Prototype)

    這篇文章介紹了.Net設(shè)計(jì)模式之原型模式(Prototype),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 詳解Asp.net 5中的ApplicationBuilder

    詳解Asp.net 5中的ApplicationBuilder

    這篇文章介紹了Asp.net 5中的ApplicationBuilder,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01

最新評論

遂昌县| 辉南县| 皋兰县| 平陆县| 岐山县| 旅游| 上饶县| 曲麻莱县| 泗洪县| 华坪县| 双江| 洪江市| 宁德市| 泗洪县| 陇川县| 开封市| 瓦房店市| 武夷山市| 平乐县| 五大连池市| 福贡县| 塔城市| 郸城县| 奇台县| 巴彦县| 江达县| 襄城县| 宝清县| 修文县| 清涧县| 邢台县| 新余市| 芷江| 莱芜市| 泸水县| 怀集县| 宝坻区| 晋江市| 吉安县| 介休市| 莱芜市|