[英]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.