0

所以几周来我一直在努力解决这个问题。我知道结构是值类型,而类是引用类型。我感到困惑的是两者之间的行为差​​异。

例如:如果我有一袋土豆,每个土豆的大小、形状和重量都不同……袋子是“类”/引用类型土豆是“结构”/值类型

我的土豆可以是一个类,还是必须是一个结构,因为其中包含的值不同?

基本上,这个问题的答案将为我清除一切。

谢谢!

4

3 回答 3

5

如果您跟踪的所有关于马铃薯的信息都是它们的大小、重量和形状,那么请回答这个问题——“如果两个马铃薯的大小、重量和形状相同,它们是否应该被认为是相同的?”。该问题的答案取决于您的问题域。

如果它们应该“相同”,那么您正在按比较它们,并且(通常)可以/应该是值类型。如果它们不应该被视为“相同”,那么它们应该是引用类型。

于 2013-06-05T12:39:45.743 回答
1

如果你想取出一个PotatoBagOfPotatoes在其他类之间传递它,如果这些类要修改土豆,那么它应该是一个引用类型。

例如,BagOfPotatoes传递到Chef.SortPotatoes(List<Potatoes> potatoes)然后继续到Chef.SkinPotatoes(Potato potato)厨师可能剥土豆皮的地方,设置Potato.IsSkinned.

  • 如果它是引用类型- 那么任何更改的值也将在BagOfPotatoes. IEPotato.IsSkinned = true

  • 如果它是一个值类型- 那么BagOfPotatoes仍然会包含一个带有原始Potatos 的包,即Potato.IsSkinned = false

这取决于您是否需要将马铃薯称为单个马铃薯,您将其扔在哪里,并且在其末尾仍然谈论相同的土豆泥(通过引用)。或者您是否只想谈论它的马铃薯类型按价值)。

于 2013-06-05T12:49:54.397 回答
0

任何是 a 的东西都struct可能是 a class。两者的行为略有不同,但你的“土豆”当然可以是 aclass而不是 a struct

于 2013-06-05T12:34:48.233 回答