我在asp.net中遇到过编写业务逻辑的几种方法,但我想知道下面的两个例子,使用struct来存储类变量有什么好处:
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 ...
}
}
答案 0 :(得分:5)
正如their answer here中的dsimcha陈述:
每当你不需要多态,想要值语义和想要 避免堆分配和相关的垃圾收集 高架。然而,需要注意的是结构(任意大) 传递比类引用更昂贵(通常是一个 机器字),所以课程最终可能会更快。
正如JoshBerke在his answer here中所述:
当您需要值语义而不是引用语义时,请使用结构。
来自http://msdn.microsoft.com/en-us/library/ms228593.aspx
1.7结构
与类一样,结构体是可以包含数据的数据结构 成员和函数成员,但与类不同,结构是有价值的 类型,不需要堆分配。结构类型的变量 直接存储结构的数据,而类的变量 type存储对动态分配的对象的引用。结构 类型不支持用户指定的继承和所有结构类型 隐式继承自类型对象。
结构对于具有的小型数据结构特别有用 价值语义。复数,坐标系中的点,或 字典中的键值对都是结构的好例子。该 对于小型数据结构,可以使用结构而不是类 应用程序的内存分配数量差异很大 施行。例如,以下程序创建并初始化 一个100分的阵列。将Point实现为一个类,101 单独的对象被实例化 - 一个用于数组,一个用于数组 100个元素。