VB和C 的自動實現屬性

2021-09-17 19:08:22 字數 859 閱讀 2892

c#在3.0版本中新增了自動實現屬性,但是當時visual basic還沒有與之匹配的特性。即將發布的.net 4.0版本中,vb在該領域迎頭趕上,但卻有所不同。c#中,自動實現屬性可以這樣編寫,如下所示:

\

\public string firstname \
\

visual basic則需要關鍵字property,這表示它不需要get/set來對字段進行區分。但是,vb中的自動實現屬性對欄位只有乙個標記。

\

\public property firstname as string\
\

對於vb和c#,該屬性都自動支援乙個私有字段。在c#中,這個成員有乙個自動生成的名稱,例如:「\u0026lt;firstname\u0026gt;k__backingfield」。不用說,這個字段不能用一般的c#語法進行訪問。visual basic則缺乏這種創新性,它只不過在該屬性名前新增了乙個下劃線。所以,如果屬性名為「firstname」,那麼對應的私有欄位名為「_firstname」。

\ 直接訪問該支援欄位讓很多事情變得都有可能。邏輯上來說,開發人員可以把該屬性標誌為readonly並在建構函式中設定它的值。然而,那並不可選。

\ 儘管它有一定的侷限,但實際上c#的靈活性更好。你可以標誌set為private或protected,和訪問支援字段一樣有效。如下所示:

\

\public string firstname \
\

兩種語言的侷限在於它們仍沒有任何針對不可變物件的工具。如果想讓物件的屬性和字段都為唯讀並可在建構函式中進行設定,那麼我們仍然需要像在.net 1.0那樣編寫**。

\檢視英文原文:auto-implemented properties in vb and c#

C 中屬性和自動屬性的區別

1.私有字段,一般設定為私有,通過屬性來賦值保證起安全性 1private string age 2.get訪問器,負責讀取資料,其中可以進行自己的邏輯判斷和資料驗證,以return或者throw結束 12 345get 3.set訪問器,負責給屬性賦值,類似於乙個返回型別為void的方法,可以包含...

C 程式設計之自動實現的屬性

在 c 3.0 及更高版本,當屬性訪問器中不需要任何其他邏輯時,自動實現的屬性會使屬性宣告更加簡潔。它們還允許客戶端 建立物件。當你宣告以下示例中所示的屬性時,編譯器將建立僅可以通過該屬性的 get 和 set 訪問器訪問的專用 匿名支援字段。下列示例演示乙個簡單的類,它具有某些自動實現的屬性 th...

c 自動屬性

例如下面 class myclass set 自動屬性 public string name c 中用get和set對類的屬性進行訪問和設定,保障類中資料的安全。自動屬性是不對字段進行邏輯驗證的操作.由於自動屬性可以省略後背字段,結果我很多時候都會忍不住用自動屬性,而且 也比帶後備欄位的屬性來的明了...