业务逻辑类

7

我遇到了几种在asp.net中编写业务逻辑的方法,但是对于下面的两个示例,使用结构体存储类变量有什么好处:

namespace Shopping
{
   public struct ShoppingCart
   {
       public string Color;
       public int ProductId;
   }

   public partial class MyShoppingCart 
   {

       public decimal GetTotal(string cartID)
       {
       }

       // Some other methods ...
   }
}

namespace Shopping
{
   public partial class MyShoppingCart 
   {
       public string Color{ get; set; }
       public int ProductId{ get; set; }

       public decimal GetTotal(string cartID)
       {
       }

       // Some other methods ...
   }
}
1个回答

5
正如dsimcha在这里的回答中所述:
当您不需要多态,想要值语义,并希望避免堆分配及相关垃圾回收开销时使用。然而,一个重要的限制是结构体(任意大)比类引用更昂贵,因此在实践中类可能会更快。
正如JoshBerke在这里的回答中所述:
当您需要值语义而不是引用语义时,请使用结构体。
来自http://msdn.microsoft.com/en-us/library/ms228593.aspx 1.7 结构体 像类一样,结构体是可以包含数据成员和函数成员的数据结构,但与类不同的是,结构体是值类型,不需要堆分配。结构体类型的变量直接存储结构体的数据,而类类型的变量存储指向动态分配对象的引用。结构体类型不支持用户指定的继承,所有结构体类型都隐式继承自type object。
结构体特别适用于具有值语义的小型数据结构。复数、坐标系中的点或字典中的键值对都是结构体的好例子。对于小型数据结构,使用结构体而不是类可以大大减少应用程序执行的内存分配次数。例如,以下程序创建并初始化一个包含100个点的数组。如果Point实现为类,则会实例化101个单独的对象——一个用于数组,每个元素一个。

10
抄袭 - 第一段完全复制自何时在C#中使用struct? - Pekka
4
即使进行了所有的编辑,这里仍然没有任何原创内容。 - jamesmortensen
@Pekka LOL 你有没有查看这个人最近的所有帖子,看是否有抄袭? - temporary_user_name
@Aerovistae:有关背景,请参阅此元问题上的评论。 - David Robinson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接