首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >业务逻辑类

业务逻辑类
EN

Stack Overflow用户
提问于 2012-12-22 06:26:01
回答 1查看 1.5K关注 0票数 7

我遇到了用asp.net编写业务逻辑的几种方法,但我想知道下面的两个例子,使用struct存储类变量有什么好处:

代码语言:javascript
复制
namespace Shopping
{
   public struct ShoppingCart
   {
       public string Color;
       public int ProductId;
   }

   public partial class MyShoppingCart 
   {

       public decimal GetTotal(string cartID)
       {
       }

       // Some other methods ...
   }
}

代码语言:javascript
复制
namespace Shopping
{
   public partial class MyShoppingCart 
   {
       public string Color{ get; set; }
       public int ProductId{ get; set; }

       public decimal GetTotal(string cartID)
       {
       }

       // Some other methods ...
   }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-22 06:29:33

their answer here中的dsimcha态

当您不需要多态时,需要值语义,并且希望避免堆分配和相关的垃圾收集开销。但是,需要注意的是,与类引用(通常是一个机器单词)相比,结构(任意大的)传递成本更高,因此类在实践中可能会更快。

JoshBerke在his answer here中的状态

当您想要值语义而不是引用语义时,请使用结构。

来自http://msdn.microsoft.com/en-us/library/ms228593.aspx

1.7结构 与类一样,结构是可以包含数据成员和函数成员的数据结构,但与类不同,结构是值类型,不需要堆分配。struct类型的变量直接存储结构的数据,而类类型的变量存储对动态分配对象的引用。Struct类型不支持用户指定的继承,并且所有struct类型都隐式地从类型对象继承。 对于具有值语义的小数据结构,Structs特别有用。复数、坐标系统中的点或字典中的键值对都是结构的好例子。在小数据结构中使用结构而不是类可以使应用程序执行的内存分配数发生很大的变化。例如,下面的程序创建并初始化一个100点的数组。将Point实现为类,实例化了101个单独的对象--一个用于数组,另一个用于100个元素。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14000609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档