[英]Is it best practice for a C# property getter to return a new object?
我經常編寫在屬性getter中創建新對象的類,但我讀過這不一定是最佳實踐。 例如:
public class Board
{
public float Width { get; }
public float Height { get; }
public CGSize Size { get { return new CGSize(this.Width, this.Height); } }
public Board(float width, float height)
{
this.Width = width;
this.Height = height;
}
}
那有什么不對嗎?
看到這里: 在getter中創建對象是不是很糟糕? 各種受歡迎的人都認為這是不好的做法,例如:“是的,這是不好的做法。理想情況下,吸氣劑不應該改變或創造任何東西”。 並且兩次讀取屬性應該產生相同的結果(而每次創建一個新對象會有所不同。)
(我注意到在C#中,System.Drawing.Rectangle類有一個Size屬性,每次都返回一個新對象。)
創建新對象是一種很好的防御策略,可以防止修改對象的內部。
但是,它應該僅在您返回的對象是可變的時才應用,並且不是struct
(無論如何都應該是不可變的[為什么?] )。
CGSize
是一個struct
,所以你在這里創建一個新的值類型對象。 這正是您不存儲Size
時應該執行的操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.