2013-01-07 28 views
0

我瞭解結構和類類型之間的基本區別。但是,在ASP.NET WebForms應用程序中......在ASP.NET WebForms應用程序的Session中保存相對較大的數據結構的理想容器類型是什麼?它應該是一個結構還是類?例如...膨脹的會話結構:

Public Structure SessionData  

Public ShipVias As List(Of XXXXX999.sycdefil_sql_VW) 
Public ShipTos As List(Of XXXXX999.ABC_Web_ShipTo_VW) 
Public Dests As List(Of XXXXX999.ABC_Web_CofA_VW) 
Public Owners As List(Of XXXXX999.ABC_Web_CofA_VW) 

Public Carts As List(Of XXXXX999.ABC_Web_Cart_VW) 
Public Carriers As List(Of XXXXX999.ABC_Carrier_Accounts_VW) 

Public Countries As List(Of XXXXX999.usp_get_CountryListResult) 
Public States As List(Of XXXXX999.usp_get_StatesListResult) 

Public POItems As List(Of XXXXX999.usp_get_cart_infoResult) 

Public SearchResults As List(Of SearchResult) 
Public Addresses As List(Of AddressResult) 

Public CartItems As List(Of itemsdetail) 

Public POs As List(Of POResult) 

Public SomeCollection As Collection 
Public CmpCode As String 
Public CmpStatus As String 
Public CmpSIPCust As String 
Public CurrentSession As String 
Public AllowAccess As Boolean 

Public QuickAddItems As List(Of QuickAddItem) 

End Structure 

正如你可能會說,XXXXX999包括含有存儲過程,函數,視圖和表一LINQTOSQL的DataContext的dbml。編程問題:我剛剛意識到我可以使一個結構(C#)爲空...在VB.NET可空(SessionData)...也問號這樣的伎倆... 昏暗的SD作爲SessionData? 我應該把它作爲一個Structure還是將其轉換爲Class?

回答

2

將其轉換爲類。在此基礎上MSDN link一個結構應該只用於如果:

考慮定義一個類的結構,而不是如果 類型的實例是小的和通常短壽命或通常嵌入在其他 對象。

不要定義的結構,除非該類型具有所有以下特徵:

  1. 它在邏輯上表示單個值,類似於原始類型(整數,雙,和等等)。
  2. 它的實例大小小於16個字節。
  3. 它是不可變的。
  4. 它不會經常被裝箱。
+0

哇,簡潔的答案,謝謝ü非常字典! – dannyrosalex

1

如果你正在處理不同的價值觀,我會用持有字典對於每一種類型的列表