亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

C#語言初級入門介紹

2024-07-10 13:22:21
字體:
來源:轉載
供稿:網友
 
本文的目的在于為尚未接觸過C#的程序員介紹這種編程語言。不論你以前是否用過C/C++或者Java,都可以從本文開始學習C#。本文的唯一假定是你具有某種類型的編程知識(如具有面向對象編程的經驗則更好,但并非必須),并擁有某種類型的C#編譯器。
最簡單的C#程序

首先我們來看標準的Hello World程序。用文本編輯器創建一個新文件HelloWorld.cs,把下面的代碼放入這個文件:


// 第一個c#程序

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

現在,在DOS命令窗口進入保存HelloWorld.cs的目錄,然后執行:


csc HelloWorld.cs

 

該命令編譯源代碼并生成HelloWorld.exe文件。運行這個執行文件就可以看到:
Hello World!

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

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

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

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

private string variety = "";

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

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

}

 

第二個文件是Example2.cs,內容如下:


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();
}
}

 

首先,我們定義了一個新的用戶定義類,名字為Apple。雖然Apple類并不一定要放到獨立的文件中,但把每個類都放到自己獨立的文件中是一個好的面向對象編程習慣,有助于簡化組織和管理。我們為Apple類的聲明加上了public修飾符(public class Apple),這樣其他類就可以創建Apple類的實例。

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

接下來的三行代碼是:


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

 

這三行代碼定義了Apple類的構造函數。類的構造函數類似一個描述如何創建類實例的藍圖。我們能夠很容易地將構造函數和類里面的其他方法區分開來,因為構造函數總是和類具有相同的名字。在本例中,類Apple的構造函數有一個字符串參數,這個參數值隨后被保存到實例變量variety。

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

下面我們來看Example2類。這個例子與前文例子的區別在于要創建并使用用戶定義類Apple的實例。我們用new操作符創建了三個Apple類的實例。創建類的實例時,我們無需顯式地調用類的構造函數,new操作符將自動為我們調用類的構造函數。創建了三個Apple類的對象之后,我們依次調用這三個對象的outputVariety方法,由outputVariety方法輸出這三個對象里variety的值。

下面我們來編譯和運行這個例子。首先我們要把Apple類編譯成動態鏈接庫,命令如下:


csc /target:library Apple.cs

 

/target:library表示不要創建執行文件,而是創建一個.dll文件(即動態鏈接庫)。所以,上面的命令將生成一個Apple.dll文件。

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


csc /reference:Apple.dll Example2.cs

 

現在我們得到了執行文件Example2.exe。執行這個文件可以在控制臺上看到如下輸出:


Macintosh
Granny Smith
Cortland

在這最后一個例子中,我們來看看C#的抽象和多態性。首先我們來定義一下這兩個新的術語。抽象(Abstract)通過從多個對象提取出公共部分并把它們并入單獨的抽象類中實現。在本例中我們將創建一個抽象類Shape(形狀)。每一個形狀都擁有返回其顏色的方法,不論是正方形還是圓形、長方形,返回顏色的方法總是相同的,因此這個方法可以提取出來放入父類Shape。這樣,如果我們有10個不同的形狀需要有返回顏色的方法,現在只需在父類中創建一個方法。可以看到使用抽象使得代碼更加簡短。

  在面向對象編程領域中,多態性(Polymorphism)是對象或者方法根據類的不同而作出不同行為的能力。在下面這個例子中,抽象類Shape有一個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() + ".");
}
}

我們創建的第一個類是Shape。這是一個抽象類,因為我們不想創建這個類的實例,我們要創建的是它的派生類的實例。我們從所有的形狀(圓、長方形、正方形)提取出共同特征到Shape類。Shape類有一個實例變量color,它的變量聲明中帶有protected修飾符。protected修飾符表示這個變量只能在類的內部或者該類的派生類中訪問。緊接這個變量聲明的就是Shape類的構造函數和存取方法getColor(),這兩個方法都沒有什么新的東西。最后一個方法getArea()加上了abstract修飾符,這是因為每一種不同的形狀都有不同的面積計算方法,因此這個方法必須由各種形狀自己來定義。

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

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

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

  要運行這個例子,先把所有文件保存到同一目錄,然后執行下面的命令:


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

 

   然后執行:


csc /reference:Shapes.dll Example3.cs

 

   現在,如果我們運行Example3.exe,將得到如下輸出:


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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区高清在线观看| 国产精品电影网| 亚洲一区久久久| 91日本在线观看| 久久99国产综合精品女同| 欧美限制级电影在线观看| 日韩美女在线观看| 亚洲国产精品99| 色综合影院在线| 日韩成人中文电影| 国产成人精品在线| 欧美风情在线观看| 国产亚洲精品高潮| 欧美国产亚洲精品久久久8v| 日韩少妇与小伙激情| 欧美性猛交丰臀xxxxx网站| 久久久久久高潮国产精品视| 亚洲精品一区二区三区不| 国产精品一区二区久久久久| 国产一区欧美二区三区| 亚洲综合在线播放| 精品无码久久久久久国产| 亚洲免费av电影| 欧美精品video| 欧美高清理论片| 中文字幕亚洲一区| 亚洲成人久久电影| 午夜精品国产精品大乳美女| 欧美中文字幕在线播放| 欧美黑人xxxx| 91久久国产综合久久91精品网站| 国产一区二区免费| 精品一区二区电影| 日韩成人高清在线| 国产亚洲精品91在线| 中文字幕欧美精品日韩中文字幕| 95av在线视频| 91精品视频网站| 亚洲欧美日韩在线高清直播| 高清欧美性猛交xxxx黑人猛交| 亚洲黄色在线看| 成人欧美一区二区三区在线湿哒哒| 狠狠色噜噜狠狠狠狠97| 久久夜色精品亚洲噜噜国产mv| 国产精品91在线观看| 最好看的2019的中文字幕视频| 日韩av电影在线网| 久久久久久久久国产精品| 国产精品自产拍高潮在线观看| 国产欧美精品va在线观看| 色综合久久精品亚洲国产| 精品magnet| 亚洲第一网站男人都懂| 国产成人精品视频在线| 亚洲精品国产成人| 日韩av电影院| 国产精品mp4| 久久久久久久久久av| 中文字幕日韩精品在线观看| 热久久99这里有精品| 91精品国产自产在线观看永久| 色综合天天综合网国产成人网| 国产精品igao视频| 亚洲综合中文字幕在线| 久久久99免费视频| 欧美高清在线视频观看不卡| 久久久成人精品| 日韩视频免费中文字幕| 国产一区二区欧美日韩| 麻豆精品精华液| 国产女同一区二区| 亚洲综合最新在线| 最近2019年手机中文字幕| 欧美丰满少妇xxxxx做受| 国产精品久久二区| 欧美成人午夜激情| 国产精品综合久久久| 久久人人爽亚洲精品天堂| 人人做人人澡人人爽欧美| 亚洲日本成人网| 欧美激情精品久久久久久蜜臀| 伊人伊成久久人综合网站| 正在播放欧美一区| 日韩成人在线视频| 久久精品国亚洲| 亚洲新中文字幕| 国色天香2019中文字幕在线观看| 欧美日韩国产二区| 亚洲a在线播放| 国产99久久精品一区二区永久免费| 成人激情黄色网| 精品国产一区二区三区在线观看| 国产午夜精品免费一区二区三区| 91精品久久久久久综合乱菊| 伊人一区二区三区久久精品| 伊人一区二区三区久久精品| 日韩人体视频一二区| 亚洲精品美女视频| 在线亚洲欧美视频| 日韩成人av一区| 亚洲国产三级网| 欧美资源在线观看| 精品久久久久久国产91| 久久久精品2019中文字幕神马| 国产在线视频不卡| 欧美成人免费在线观看| 精品国产老师黑色丝袜高跟鞋| 亚洲一级免费视频| 国产精品一区二区av影院萌芽| 欧美午夜丰满在线18影院| 成人午夜在线影院| 亚洲欧美在线一区| 久久偷看各类女兵18女厕嘘嘘| 成人午夜激情免费视频| 亚洲激情视频在线播放| 亚洲欧美在线x视频| 亚洲精品资源在线| 日本一区二三区好的精华液| 欧美劲爆第一页| 日韩精品视频免费| 热久久免费视频精品| 亚洲3p在线观看| 中国china体内裑精亚洲片| 欧美性高潮床叫视频| 日韩精品免费电影| 91精品久久久久久久久青青| www.国产一区| 亚洲专区在线视频| 中文字幕日韩av综合精品| 一区二区三区无码高清视频| 色综合久久88色综合天天看泰| 国产精品高清免费在线观看| 欧美激情性做爰免费视频| 亚洲毛片在线观看.| 精品久久久久久久久久ntr影视| 日韩综合视频在线观看| 欧美在线不卡区| 欧洲亚洲免费视频| 国产一区二区三区在线免费观看| 国产精品亚洲第一区| 亚洲国产日韩欧美在线图片| 亚洲在线www| 欧美在线一级视频| 91精品国产91久久久久久| 一区二区三区精品99久久| 亚洲国产又黄又爽女人高潮的| 欧美日韩免费看| 日韩av成人在线| 91av成人在线| 日韩av免费看网站| 国外成人免费在线播放| 日韩电影在线观看中文字幕| 久久久久久久国产| 成人夜晚看av| 国产一区二区三区高清在线观看| 国产免费一区视频观看免费| 97热在线精品视频在线观看| 亚洲欧美日韩天堂| 亚洲精品国产精品国自产观看浪潮| 日本韩国欧美精品大片卡二| 国产经典一区二区| 亚洲国产三级网| 亚洲美女福利视频网站| 国产精品一区二区三区久久|