簡體   English   中英

C#中的屬性獲取器設置器

[英]Property getter setter in C#

我有一個班級圖書館項目。 我在下面有一個物業。 這不是只讀屬性

 private   Int32 ABC  ;
public Int32   ABCD
        {
            set
            {
                this.ABC = value;
            }
            get
            {
                return this.ABC;
            }
        }

我的問題是,是否有必要為getter / setter和setter聲明私有變量?

編輯

我的意思是像下面嗎?

public Int32 ABCD {}

自動屬性聲明需要get; set; get; set; 花括號中的語句(這是您在原始問題中的意思):

public Int32 ABCD { get; set; }

空的屬性塊無效。

使用C#3.0(VS 2008)或更高版本中引入的自動實現的屬性。
http://msdn.microsoft.com/zh-CN/library/bb384054.aspx

public Int32 Abcd {get;set;}

編譯器會為您創建后備字段。 但是,它是匿名的,無法訪問。 如果以后發現需要訪問支持字段,則可以顯式聲明它,並使用該字段重新實現getter和setter而不破壞接口。

使用自動執行的屬性,從2008年開始進行干預:

    public Int   ABCD
    {
        set;
        get;
    }

但是區別是默認值,即,在具有后備字段的屬性中,您可以在變量中設置默認值,但在這種情況下,默認值為.net默認值。 (實際上,您應該在構造函數中將其初始化為默認值)。

如果您選擇第二個,C#將為您創建第一個。

是否需要為getter / setter和setter聲明相同的私有變量?

如果您的意思是有必要使用私有變量 ,那么是的(除非您使用BoltClock提到的自動方法)。您應該記住,這是一個完整的代碼塊,因此您可以做任何您想做的事情在那里-盡管您應該在合理的范圍內進行操作,因為您不希望任何事情會減慢對屬性的訪問。

例如,更改屬性可能會有副作用,即,可能必須更新另一個屬性,或者您可能必須通知其他屬性也已更改。

如果您沒有通知或做任何其他事情,那么自動getter / setter方法的開發速度會更快(但這並不是說它是執行最快(或最慢)的方法)。

你可以這樣

public string ABCD { get;set;}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM