【发布时间】:2014-06-13 04:12:43
【问题描述】:
我目前有一个包含块列表的 Match 结构。
public struct Match{
public List<Block> blocks;
}
当我尝试创建一个新的匹配(在本例中称为 matchData)并将块添加到其块列表中时,我的编译器输出:
Use of unassigned local variable 'matchData'
我尝试通过这样做来初始化列表:
public struct Match{
public List<Block> blocks = new List<Block>();
}
导致以下错误:
Structs cannot have instance field initializers
那么我应该如何初始化我的 Match 结构?我必须制作一个构造函数吗?
【问题讨论】:
-
你为什么使用结构而不是类?
-
我制作了一个结构体还有两个原因:1) 匹配可能包含其他数据,例如匹配的方向以及块网格中最低的块。 2) 还会有一个匹配列表,所以它基本上是一个以特定方式排序的列表列表的好方法。我没有理由不能使用构造函数,我想我是这样问的,以确保我没有忽略某些东西。我还不习惯 C# 中的结构,因为它们看起来与我更熟悉的其他编程语言不同。
-
以上都不排除您使用类而不是结构。如果你不熟悉 C# 中的结构,你应该小心。结构是值类型,它有时会以不直观的方式改变它们的行为方式。结构应该非常小而且简单。您的“匹配”实体对我来说更像是一门课。看看these guidelines。
标签: c# struct initialization