熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET入門教程 9.4.1 創建類[5]

2013-11-13 10:50:46  來源: .NET編程 

    只寫屬性

    除了不同的關鍵字和只包含setter之外將屬性設置為只寫與只讀的過程類似


Public WriteOnly Property ProductID() As Double

    Set (ByVal value As Integer)

        _productID = value

    End Set

End Property

    這裡的關鍵字為WriteOnly在使用該定義時如果嘗試讀取該屬性將會導致編譯錯誤

    屬性與公有變量

    在讀取屬性文本時您或許會驚奇為什麼要使用它們為什麼不只是將內部變量設置為公有?


Public Class CartItem

    Private ProductID As Integer

    Private ProductName As String

    Private ProductImageUrl As String

    Private Quantity As Integer

    Private Price As Double

Private LineTotal As Double

End class

    該代碼可以正常工作但並不是個好方法因為它違背了面向對象的一個原則抽象(還有其他一些面向對象的原則但它們與這個特定的主題無關)這意味著您應該將功能抽象化因而要隱藏該類的內部工作方式之所以要這樣處理是因為它允許您不必修改該類的使用方式就可以修改它的內部工作方式例如考慮LineTotal它是Quantity與Price的乘積必須使用某種方法計算這個總數而且如果使用Public變量那麼將計算值保存在何處?它可以在構造函數中實現但是對於只是創建了一個空記錄項的空構造函數該怎麼辦?您是讓該類的用戶計算總數或是提供一些其他功能來實現嗎?這兩種方法都不可取

    抽象只是表示您提供了一個簡單的有保障的方法來訪問類的功能而且用戶不需要知道該類如何工作您使用了一些屬性來隱藏內部存儲器那些私有變量都是內部存儲器而屬性只是該類的用戶用於訪問內部變量的一種方法

    使用屬性將內部存儲器抽象化可以讓您處理行總數的問題因為屬性存取器執行計算過程實際上使用這種抽象意味著可以使用您所喜歡的任何方法來保存CartItem的內部狀態而且不需要修改那些使用CartItem的代碼

    對於實際保存屬性值的私有變量的命名並沒有嚴格的限制但通常都使用一個下劃線作為前綴同時也區分了大小寫因此如果屬性為LineTotal則內部私有變量為lineTotal

[]  []  []  []  []  []  []  []  


From:http://tw.wingwit.com/Article/program/net/201311/14622.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.