自動屬性和初始化器

2021-07-11 16:26:58 字數 1698 閱讀 3259

一般我們在類中都會有關鍵字,根據物件導向的法則,這個變數最好是私有的

class

person

但是我們有時要在類的外面訪問這個變數,如果定義成私有的就無法訪問了,最開始我想既然要要訪問那就都定義成public型別就好了,把不訪問的定義成private,為什麼要有屬性這個東西?舉個例子

class

person

static main()

我們發現如果定義成public,那麼就可以隨意的訪問和修改,然而修改的資料非常的不可思議,這必然會造成錯誤,此時就需要新增條件約束。我們可以通過get,set訪問器來對資料進行處理

class person

setelse}}

}static

void main(string args)

上面的賦值超出了範圍,在set中進行修改,最後得到的是100;

屬性的定義比較麻煩,先要定義乙個私有變數,然後還要在get中return,在set中value=變數,所以有了自動屬性的誕生。

class person

public

int height

}

自動屬性為我們省去了私有變數和get,set的定義,但是功能還是一模一樣的。通過reflect我們可以發現其實是編譯器為我們定義了乙個匿名的私有字段。如果我們想要對age定義為唯讀,可以

class person

public

int height

}

有了物件初始化之後,我們就不需要考慮定義不同的建構函式來應對不同情況的初始化了,這樣就減少了我們在類中定義建構函式的**了。

class

program

; person pp = new person ;

person ppp = new person ;

}}class

person

public

string name

}

上面的**相當於這個樣子的

class program

}class person

public

string name

public

person()

public

person(int age,string name)

public

person(int age)

public

person(string name)

}

想想如果還不用自動屬性,那麼乙個簡單的類就有多長。

除了物件初始化器,還有集合初始化器。

static

void main(string args)

;}

再來乙個綜合的

class

program

, new person ,

new person };}

}class

person

public

string name

}

物件初始化器和集合初始化器

c 語言開發團隊在c 3.0中增加了乙個名為 物件初始化器 object initializer 的特性 它能初始化乙個物件中的所有允許訪問的字段和屬性。別以為這和你沒關係。我們先來看乙個你非常熟悉不過的 user operator new user operator.id 1 operator.p...

C 初始化器和建構函式初始化器

初始化器分為物件初始化器和集合初始化器。下面一一介紹。物件初始化器 物件初始化器的作用,簡單點說就是可以使我們初始化乙個類的 變得更簡潔。比如下面這個類 class person public int age public string address 我們要初始化它並對它賦值的話通常要這樣 per...

建構函式和屬性初始化

屬性值的賦值應該在類的建構函式之前還是之後執行?public class testclass 2 public testclass if testproperty 2 var testinstance new testclass 在上面的示例中,testproperty值在類的建構函式中或在類建構函...