.NET在结构和类之间进行选择

.NET Choosing between Structures and Classes

本问题已经有最佳答案,请猛点这里访问。

复制:什么时候应该使用结构而不是类?

只是想知道是否有人可以提供一些建议或示例,说明何时最好在.NET中的类上使用结构,反之亦然

我已经做了一些背景阅读,并理解了两种结构之间的区别,即结构存储在堆栈上,类存储在堆栈上等等。但还没有找到一些明确的例子,其中一个可以提供优于另一个的好处。

多谢


对同一个问题引用一个好答案(什么时候应该使用结构而不是类?):

MSDN has the answer: Choosing Between
Classes and Structures.

Basically, that page gives you a
4-item checklist and says to use a
class unless your type meets all of
the criteria.

Do not define a structure unless the
type has all of the following
characteristics:

  • It logically represents a single value, similar to primitive types
    (integer, double, and so on).
  • It has an instance size smaller than 16 bytes.
  • It is immutable.
  • It will not have to be boxed frequently.

使用class,除非您有非常具体的理由使用struct。请参阅有关结构的问题以了解某些特定原因。

编辑:与class相比,struct的一个可能的优势是,您不能拥有null实例。请参见是否有方法要求提供给方法的参数不为空?


非常基本的指导原则,甚至不特定于.NET:

除了需要非常小、非常简单的容器外,其他都使用类。如果不需要属性或函数,则应使用类。

在我看来,对于结构来说,一个很好的例子是当您需要创建一个项数组时,但是这些项是一对int和string。一些基本的东西


我为你找到了这页。它解释了在哪里使用一个或另一个,每个的好处和缺点。

http://www.jaggersoft.com/pubs/structsvsclasses.htm网站

当做!!!!


我喜欢上课。

1
2
3
4
5
6
7
8
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.