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 Nullable(Of SessionData)......还有问号这样的伎俩...... Dim sd As SessionData?我应该将其保留为结构还是将其转换为类?

4

2 回答 2

2

将其转换为一个类。基于此MSDN 链接,仅应在以下情况下使用结构:

如果类型的实例很小且通常短暂存在或通常嵌入在其他对象中,请考虑定义结构而不是类。

除非类型具有以下所有特征,否则不要定义结构:

  1. 它在逻辑上表示单个值,类似于原始类型(整数、双精度等)。
  2. 它的实例大小小于 16 字节。
  3. 它是不可变的。
  4. 它不必经常装箱。
于 2013-01-07T16:41:08.373 回答
1

如果您正在处理不同的值,我会使用一个包含每种列表类型的字典的字典

于 2013-01-07T17:38:52.597 回答