2012-12-22 222 views
7

我所遇到的一些方法写在asp.net业务逻辑,但我想知道,下面2例如,什么是使用结构来存储类变量的好处:业务逻辑类

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 ... 
    } 
} 

回答

5

由于dsimcha国their answer here

每当你不需要多态性,希望值语义,并希望 到避免堆分配和相关的垃圾回收开销 。然而,需要注意的是,结构(任意大)比类引用(通常是一个机器字)要贵得多,所以类在实践中最终会变得更快。

由于JoshBerke国his answer here

使用结构,当你想的语义值,而不是引用语义。

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

1.7结构

象类,结构是可以包含数据 成员和函数成员数据结构,但与类不同,结构是值 类型和不需要堆分配。结构类型为 的变量直接存储结构的数据,而类 类型的变量存储对动态分配对象的引用。 Struct 类型不支持用户指定的继承,并且所有结构类型 都隐式地从类型对象继承。

结构对于具有值语义的小数据结构特别有用。复杂的数字,坐标系中的点或字典中的键值对都是结构的很好例子。 对小数据结构使用结构而不是类可以使应用程序 执行的内存分配数量有很大差异。例如,以下程序会创建并初始化100个点的数组。随着Point实现为一个类,实例化单独的对象 - 一个用于数组,一个用于100个元素。

+0

感谢您的明确解释。 – k80sg

+10

剽窃 - 第一段是从[什么时候在C#中使用结构体]批量拷贝的(http://stackoverflow.com/q/521298) –

+4

即使所有的编辑,这里仍然没有任何* original *材料。 – jmort253