C#物件導向編程(續)

來源:互聯網
上載者:User

一.建構函式

上次說到類是封裝了屬性和方法的實體的集合,物件導向編程過程把所有的東西都看成對象,而且世界上沒有一模一樣的對象,所以在建立對象的時候要對對象的屬性進行初始化.在定義基本類型變數的時候.聲明一個對象的方法如下:

int myint = 3;

但是在建立對象型資料的時候要用到關鍵字new來完成對象的建立.最基本的string類型對象的建立方法如下:

string name = new string("Lu xiaofeng");

這裡在調用name的時候記憶體中會載入 name=”Lu xiaofeng”.

對象型資料必須在建立後才能使用,否則會出現錯誤一下:可能尚未初始設定變數.另一個比較重要的概念就是建構函式,每一個類都有一個預設的建構函式來初始化對象的一些資料.同時要注意的是建構函式的形式:

 

建構函式的函數名必須與類的名字相同,而且是沒有任何傳回值,也不允許用void來修飾.但是建構函式允許重載:一個類中可以用多個不同的建構函式來滿足建立對象.例如在Person類中有兩個建構函式: public Person(){}建構函式

和public Person(String name,String sex,int age,double  weight)//建構函式.當我們在定義一個Person類的變數的時候; Person myman=new Person();同時也可以用另一個建構函式來初始化一個對象.Person niu=new Person("name","man",22,99);但是這個對象和myman對象是不一樣的.但是這兩個對象的屬性是不一樣.

二.this的引用

我們先來看下兩個建構函式的具體內容:

public Person()    {

name = "Lu xiaofeng";

sex = "man";

age = 22;

weight = 99;

}

public Person(string name, string sex, int age, double weight) { this.name = name;

this.sex = sex;

this.age = age;

this.weight = weight;

}//建構函式二

在第二個建構函式中多了個this,this的作用是用來指定”這個”的.尤其是在下面的情況:

public string name public string sex;public int age;public double weight;

這四個欄位的名字與建構函式public Person(string name, string sex, int age, double weight)的參數一樣的時候.this是用來指定當前這個對象的.

當然我們可以把public Person(string name, string sex, int age, double weight)的參數換成其他的名字. public Person(string myname, string mysex, int myage, double myweight).這個並不會影響程式的結果,但是如果把上表建構函式二中的中的this去掉,來看看有甚麼影響.建立兩個對象.person1,person2.

Person newman = new Person("lixiao", "woman", 11, 88);

Console.WriteLine("name={0},sex={1},age={2},weight={3}",newman.name, newman.sex, newman.age, newman.weight);

Person another = new Person();

Console.WriteLine("name={0},sex={1},age={2},weight={3}",another.name, another.sex, another.age, another.weight);

Console.ReadKey();

public Person(string name, string sex, int age, double weight)

{

name = name;

sex = sex;

age = age;

weight = weight;

}//去掉 this後.

 

去掉this後的效果.有關this的知識在後面還會介紹. 現在對this做個簡單的小節:this關鍵字引用被訪問成員所在的當前執行個體。靜態成員函數沒有this指標。this關鍵字可以用來從建構函式,執行個體方法和執行個體化訪問器中訪問成員。本文發表於編程入門網(bianceng.cn)

不能在靜態方法。靜態屬性訪問器或者域聲明的變數初始化程式中使用this關鍵字,這將會產生錯誤。

1.在類的建構函式中出現的this作為一個實值型別表示對正在構造的對象本身的引用。

2.在類的方法中出現this作為一個實值型別表示對調用該方法的對象的引用。

3.在結構的建構函式中出現的this作為一個變數類型表示對正在構造的結構的引用。

4.在結構的方法中出現的this作為一個變數類型表示對調用該方法的結構。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.