重复: When should I use a structure instead of a class?
只是想知道是否有人可以提供一些建议或示例,说明何时最好在.NET中使用类结构,反之亦然
我做了一些背景阅读并理解了两者之间的差异,即结构存储在堆栈上,堆上的类等。但是没有能够找到一些明显的例子,其中一个可以提供另一个的好处。
非常感谢
答案 0 :(得分:4)
引用a good answer to the same question(When should I use a struct instead of a class?):
MSDN的答案是:Choosing Between Classes and Structures.
基本上,该页面为您提供了一个 4项清单并说要使用a 除非你的类型满足所有类别 标准。
除非是,否则不要定义结构 type具有以下所有内容 特性:
- 它逻辑上表示单个值,类似于原始类型 (整数,双精度等)。
- 实例大小小于16个字节。
- 这是不可改变的。
- 不必频繁装箱。
答案 1 :(得分:1)
使用class
,除非您有非常具体的理由使用struct
。有关具体原因,请参阅Questions about Structs。
修改:struct
优于class
的一个可能优势是您不能拥有null
个实例。见Is there a way to require that an argument provided to a method is not null?
答案 2 :(得分:0)
我更喜欢课程。
Structure TestStruct
Dim Name as String
End Structure
Dim x as TestStruct
If x Is Nothing Then
'ALWAYS returns false. A class would return true. Nullability, baby.
答案 3 :(得分:0)
答案 4 :(得分:0)
非常基本的准则,甚至不是.NET特定的:
除非您需要非常小巧,非常简单的容器,否则请使用CLASS。 如果你不想要属性或函数,你应该使用一个类。
我认为结构的一个很好的例子就是你需要创建一个项目数组,但这些项目是int和string的“对”。 一些基本的东西