簡體   English   中英

C#自動實現的屬性-使用內部類

[英]C# Auto-Implemented Properties - Using Inside Class

我在使用自動實現的屬性時尋求有關最佳做法的建議。

如果不需要引用類中的屬性,則始終使用它們。 但是,如果我確實需要在類內部訪問該屬性,則習慣於手動添加私有屬性。

例如,如果我有一個名為Person的類,具有firstName和lastName屬性,而不必在類內處理該數據,則可以這樣做:

public class Person
{
    public string firstName { get; set; }
    public string lastName { get; set; }
}

但是,如果我需要對這些屬性進行操作,請執行以下操作:

public class Person
{
    private string _firstName;
    public string firstName
    {
        get { return _firstName; }
        set { _firstName = value; }
    }

    private string _lastName;
    public string lastName
    {
        get { return _lastName; }
        set { _lastName = value; }
    }

    public void testMethod()
    {
        Debug.Print(_firstName + " " + _lastName);
    }

}

我的問題:這是好習慣嗎?

不,沒有意義。 當您需要做的不僅僅是設置/獲取支持字段時,您應該轉到完全實現的屬性。

就目前情況而言:

Debug.Print(FirstName + " " + LastName); //convention says use UpperCamel for props

絕對沒問題,引入后備字段只會給代碼帶來不必要的干擾。

相反,如果您想進行一些驗證:

public string LastName
{
    get { return _lastName; }
    set { 
        if(value.Contains("!")){
            throw new Exception("names can't contain '!'");
        }
        _lastName = value; }
}

現在,您有充分的理由放棄自動實現的屬性。

如果您只是想避免第二次查找的開銷,請不必擔心。 很有可能這將永遠不會導致性能問題,如果確實如此,您將通過測量代碼時序來找出答案。 試圖以犧牲清晰度為代價來編寫最佳效率的代碼是一個糟糕的目標,並且會導致代碼混亂。 每次都需要提高清晰度,並且當程序運行緩慢時,您可以返回並找出導致它的原因。 研究已經確定,極有可能不會達到您的預期,因此嘗試猜測並不是一種經濟的追求。

暫無
暫無

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

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