我正在创建一个将从资源文件中读取信息的类(与资源文件的类型无关,只是为了澄清)并通过 表格上的信息,便于操纵信息。
我的问题是我应该使用结构来轻松组织信息,然后将列表传递给表单以寻求利用这些信息吗?
我将要抓取的一组典型信息就是:
[Hero Name]
[Hero Type]
[Starting HP]
[Starting Mana]
[Portrait]
[Backstory]
[Spell 1]
[Spell 1 Description]
[Spell 2]
[Spell 2 Description]
[Spell 3]
[Spell 3 Description]
[Spell 4]
[Spell 4 Description
我应该在这种情况下使用结构吗?英雄名字也是一个字符串,英雄类型。但是,例如,[肖像]将是一个图像。结构可以包含多种数据类型吗?
答案 0 :(得分:12)
在这种情况下,我更喜欢上课。
如果满足以下所有条件,则应使用结构:
在你的情况下,以上都不是真的,因为你正在制作一个(可能是可变的)大型属性组。
至少在逻辑意义上,您希望将结构用于单个不可变(即:不变)值的结构。复数或向量等是结构是好的候选者的场景类型。
此外,通常情况下,无论何时在对象内部包含引用类型(如字符串),您都希望对象成为一个类。那,马上就是你不想要结构的好兆头。
有关详情,请参阅“Choosing Between Classes and Structures”的设计指南页。
答案 1 :(得分:1)
你肯定可以在这种情况下使用结构,但这并不一定意味着你应该。
当您需要值语义而不是引用语义时,应该使用structs
。 MSDN有更多指导方针,包括(这些是不使用结构的时候)
在这种情况下,我会使用一个类。
答案 2 :(得分:0)
是的,结构可以包含多种数据类型。
但是,使用struct与使用类完全取决于您将如何使用该对象。请记住,当您将对象分配给新变量时,包含的值将被复制到新对象中,而不会反映在原始对象中,即:
Dim a As New Character("Willow", 12) ' Starting up the name and the Hp, as an example.
Dim b As Character = a
b.HP = 24
Console.WriteLine(a.HP)
代码将写入'12',因为这是'a'中保存的生命值。