2013-01-07 33 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

如果你正在处理不同的价值观,我会用持有字典对于每一种类型的列表