所以我一直试图让我的头脑周围几周。我理解结构是值类型,并且类是引用类型。我感到困惑的是两者之间的行为差异。
例如: 如果我有一袋土豆,每个土豆的大小,形状和重量都不同...... 该包将是“类”/参考类型 土豆将是'结构'/值类型
我的土豆可以成为一个类,还是必须是一个结构,因为其中包含的值是不同的?
基本上,这个问题的答案将为我清除一切。
谢谢!
答案 0 :(得分:5)
如果您追踪土豆的大小,重量和形状,请回答问题 - "如果两个土豆的大小,重量和形状相同相同,他们应该被认为是一样的吗?"。该问题的答案取决于您的问题域。
如果它们应该是相同的",那么您可以通过值进行比较,并且(通常)可以/应该是值类型。如果不应将它们视为"相同的",那么它们应该是引用类型。
答案 1 :(得分:1)
如果你想从Potato
中取出BagOfPotatoes
并在其他类之间传递,如果这些类要修改马铃薯,那么它应该是一个引用类型。
例如,BagOfPotatoes
传递给Chef.SortPotatoes(List<Potatoes> potatoes)
,然后转到Chef.SkinPotatoes(Potato potato)
,厨师可以在那里涂抹土豆,设置Potato.IsSkinned
。
如果是引用类型 - 那么更改的任何值也会在BagOfPotatoes
中更改。即Potato.IsSkinned = true
如果是值类型 - 那么BagOfPotatoes
仍会包含原始Potato
s的包,即Potato.IsSkinned = false
它取决于你是否需要将马铃薯称为个别马铃薯,你可以在那里吃掉它,并且仍然在它的末尾谈论同样的土豆泥(< em>通过引用)。或者您是否只想谈论它的马铃薯类型(按值)。
答案 2 :(得分:0)
struct
的任何内容都可以是class
。这两者的行为略有不同,但你的“土豆”当然可以是class
而不是struct
。