3 回答

TA貢獻1853條經驗 獲得超18個贊
復制或比較實例沒有意義(例如,窗口) 實例生存期與外部影響相關聯(例如,TemporaryFile) 實例只是“接收器”-只寫到外部狀態的管道(例如CGContext)。
結構實例總是通過值傳遞,類實例總是通過引用傳遞。這意味著它們適合于不同類型的任務。在考慮項目所需的數據結構和功能時,請確定每個數據結構應該定義為類還是結構。
作為一般指導方針,考慮在下列一個或多個條件適用時創建一個結構:
該結構的主要目的是封裝一些相對簡單的數據值。 在分配或傳遞該結構的實例時,可以合理地預期封裝的值將被復制,而不是引用。 結構存儲的任何屬性本身都是值類型,它們也將被復制而不是引用。 該結構不需要從另一個現有類型繼承屬性或行為。
良好的結構候選例子包括:
幾何形狀的大小,可能封裝了一個寬度屬性和一個高度屬性,兩者都屬于Double類型。 一種在系列中引用范圍的方法,可能會封裝Int類型的Start屬性和Length屬性。 三維坐標系中的一個點,可能封裝了x、y和z的屬性,每個屬性都是Double類型的。
在所有其他情況下,定義一個類,并創建要通過引用管理和傳遞的該類實例。實際上,這意味著大多數自定義數據構造應該是類,而不是結構。
- 3 回答
- 0 關注
- 557 瀏覽
添加回答
舉報