无法使用集合初始值设定项实现类型,因为它不实现 'System.Collections.IEnumerable'
Cannot implement type with a collection initializer because it does not implement 'System.Collections.IEnumerable'
我正在使用 C# 和 XNA。
我有一个 class:
class Quad
{
public Texture2D Texture;
public VertexPositionTexture[] Vertices = new VertexPositionTexture[4];
}
我正在尝试创建一个新实例 class:
Quad tempQuad = new Quad()
{
Texture = QuadTexture,
Vertices[0].Position = new Vector3(0, 100, 0),
Vertices[0].Color = Color.Red
};
然后将其添加到 "Quad"s
的列表中
QuadList.Add(tempQuad);
我总是收到错误消息:
"Cannot implement type with a collection initializer because it does not implement 'System.Collections.IEnumerable'"
或者有人告诉我
Vertices does not exist in the current context.
为什么我不能像这样创建 class?我是不是很笨?我必须这样做吗?:
Quad tempQuad = new Quad();
tempQuad.Vertices[0].Position = new Vector3(0, 100, 0);
tempQuad.Color = Color.Red;
QuadList.Add(tempQuad);
有没有办法解决这个问题?任何帮助将不胜感激。
对象初始化语法期望分配给您正在初始化的对象的属性,但是通过尝试分配给 Vertices[0]
您正在尝试分配给 [=20= 的索引的属性] 在您正在初始化的对象上 (!)。
只要直接赋值Vertices
就可以使用对象初始化语法:
Quad tempQuad = new Quad()
{
Texture = QuadTexture,
Vertices = new VertexPositionTexture[]
{
new VertexPositionTexture
{
Position = new Vector3(0, 100, 0),
Color = Color.Red
},
// ... define other vertices here
}
};
如您所见,这很快就会变得非常混乱,因此您最好在对象初始化之外初始化数组:
var vertices = new VertexPositionTexture[]
{
new VertexPositionTexture
{
Position = new Vector3(0, 100, 0),
Color = Color.Red
},
// ... define other vertices here
};
Quad tempQuad = new Quad()
{
Texture = QuadTexture,
Vertices = vertices
};
我正在使用 C# 和 XNA。
我有一个 class:
class Quad
{
public Texture2D Texture;
public VertexPositionTexture[] Vertices = new VertexPositionTexture[4];
}
我正在尝试创建一个新实例 class:
Quad tempQuad = new Quad()
{
Texture = QuadTexture,
Vertices[0].Position = new Vector3(0, 100, 0),
Vertices[0].Color = Color.Red
};
然后将其添加到 "Quad"s
的列表中QuadList.Add(tempQuad);
我总是收到错误消息:
"Cannot implement type with a collection initializer because it does not implement 'System.Collections.IEnumerable'"
或者有人告诉我
Vertices does not exist in the current context.
为什么我不能像这样创建 class?我是不是很笨?我必须这样做吗?:
Quad tempQuad = new Quad();
tempQuad.Vertices[0].Position = new Vector3(0, 100, 0);
tempQuad.Color = Color.Red;
QuadList.Add(tempQuad);
有没有办法解决这个问题?任何帮助将不胜感激。
对象初始化语法期望分配给您正在初始化的对象的属性,但是通过尝试分配给 Vertices[0]
您正在尝试分配给 [=20= 的索引的属性] 在您正在初始化的对象上 (!)。
只要直接赋值Vertices
就可以使用对象初始化语法:
Quad tempQuad = new Quad()
{
Texture = QuadTexture,
Vertices = new VertexPositionTexture[]
{
new VertexPositionTexture
{
Position = new Vector3(0, 100, 0),
Color = Color.Red
},
// ... define other vertices here
}
};
如您所见,这很快就会变得非常混乱,因此您最好在对象初始化之外初始化数组:
var vertices = new VertexPositionTexture[]
{
new VertexPositionTexture
{
Position = new Vector3(0, 100, 0),
Color = Color.Red
},
// ... define other vertices here
};
Quad tempQuad = new Quad()
{
Texture = QuadTexture,
Vertices = vertices
};