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 には、sproc、関数、ビュー、およびテーブルを含む LINQTOSQL DataContext dbml が含まれています。

編集ポイント:構造体(C#)をnull可能にできることに気づきました...vb.net Nullable(Of SessionData)で...また、疑問符はそのようなトリックを行います... Dim sd As SessionData? これを構造体として保持するか、クラスに変換する必要がありますか?

4

2 に答える 2

2

それをクラスに変換します。このMSDN リンクに基づいて、構造体は次の場合にのみ使用する必要があります。

型のインスタンスが小さく、一般的に寿命が短い場合、または一般的に他のオブジェクトに埋め込まれている場合は、クラスではなく構造体を定義することを検討してください。

型が次の特性をすべて備えていない限り、構造体を定義しないでください。

  1. プリミティブ型 (integer、double など) と同様に、単一の値を論理的に表します。
  2. インスタンス サイズは 16 バイト未満です。
  3. 不変です。
  4. 頻繁に箱詰めする必要はありません。
于 2013-01-07T16:41:08.373 に答える
1

個別の値を扱っている場合は、すべてのタイプのリストの辞書を保持する辞書を使用します

于 2013-01-07T17:38:52.597 に答える