1. 程式人生 > >淺談c#語言的類,事件,物件,方法和函式的區別

淺談c#語言的類,事件,物件,方法和函式的區別

在討論這些關係之前讓我們先來了解一下面向過程和麵向物件的區別: 所謂面向過程就是把一切事物或者需要解決的問題都當做是一個過程來處理,而面向物件則是把一切事物當成一個一個的物件來處理,這兩者有什麼區別呢,舉一個簡單的例子:

編寫一個駕駛汽車的程式:

(1)面向過程的程式設計:

編寫一個函式,void drivecar();按過程分步處理具體的這裡不做列舉。

(2)面向物件的程式設計:

將一輛汽車看成一個物件,將所有汽車物件的共性抽取出來,設計一個類Car,類中有一個方法void drive(),用Car這個類例項化一個具體的物件car,呼叫:car.drive()就實現了駕駛汽車。

相信通過這個例子就可以說明面向過程和麵向物件的區別了,下面結合c#語言和C語言總結一下:

(1) 類,其實也可以叫做模板,那什麼又叫模板呢?所謂模板,顧名思義,就是一個模具,不同的模具可以就做出不同的模型,而這些模型都有其各自的特徵,那麼,類也是一樣的,每一個類都有它的屬性、方法、事件等等特徵。如果把屬性看做物件的性質;把方法看成物件的動作;把事件看做物件的響應,舉一個例子:把手機看成一個類,手機的外形就是手機的一個屬性,每個人都會使用手機打電話,主叫就是手機這個類的一個方法,而被叫就是事件。

(2)方法反映的是物件的行為,結合C語言,不恰當地說,類的方法就可以理解為面向過程的語言的函式,反映的是要完成的任務,比如說,現在要求兩個數的和,c#就可以用public來宣告一個方法,然後通過呼叫這個方法來實現,而c語言需要編寫一個int sum()的函式去實現。

(3)C#中事件就是是一個類和另一個類之間傳遞訊息或者處發新的行為的一種程式設計方法,相信通過上面打電話的例子應該能理解了。

這裡再繞一下我們的腦子,我們知道C語言中最基礎的printf函式,在最開始的時候,我們並不知道它的函式原始碼是怎樣的,我們只知道printf("%d",a);這個語句就是將int型的a這個變數的值輸出到螢幕,那麼是不是就可以將這個函式看作是一個類呢?答案是可以的,因為這個函式有它的介面供我們使用,我們看到它的函式宣告(包含函式返回值,函式名,形參列表)就知道這個函式是幹什麼的,像這樣的庫函式很多很多,我們不必要知道它的原始碼是什麼同樣可以正確使用它,這就是面向物件的程式設計的思維,對於每一個類,只要知道這個類有什麼屬性,怎麼使用,就可以了,至於這個類是怎麼抽象出來的並不用管。

最後,再結合ASP.NET網頁設計,因為C#語言就是用來做這個事情的,所以我們用具體的例子來談談他們的區別,假設現在我們添加了一個TextBox控制元件,一個Button控制元件,一個Lalbel控制元件,首先要明確一點,這三個控制元件都是類,假設我們現在要實現將使用者在TextBox中輸入的文字內容顯示出來,那麼我們可以這樣做,在Button的Click事件中使用Lalbel.Text=TextBox.Text這一方法,用Lalbel來顯示輸入的文字內容。下面是完整的程式碼:

(1)div層程式碼:

<div> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <br />

<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> <br />

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div>

(2)後臺程式碼:

public partial class _Default : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e)

{

}

protected void Button1_Click(object sender, EventArgs e)

{

Label1.Text = TextBox1.Text;

}