不能在同一个类中使用声明的字典
本文关键字:声明 字典 同一个 不能 | 更新日期: 2023-09-27 17:49:22
好吧,我不知道这到底是怎么回事。
我声明并初始化了一个字典:
public Dictionary<byte, Color> blobType = new Dictionary<byte, Color>();
但是我不能在类中使用它,智能也不会显示它。如果我尝试像这样使用它,我会得到错误:
blobType.add(1, Color.White);
或者如果我不初始化它,稍后再尝试:
public Dictionary<byte, Color> blobType;
blobType = new Dictionary<byte, Color>();
仍然不能使用它,就像它没有看到它在那里的blobType。
我尝试重命名变量,在VS2012中这样做,仍然发生同样的事情。因此,当类是另一个类中的对象时,它可以在类外部访问它。但是VS2010 c# Express拒绝承认它在我声明它的类中的存在。这是怎么呢
按要求,整个类:
namespace blob
{
class Blob
{
public Texture2D texture;
public Dictionary<byte, Color> blobType = new Dictionary<byte, Color>();
blobType.add(1, Color.White);
public Vector2 position;
private float scale = 1;
public float Scale
{
get { return scale; }
set { scale = value; }
}
public Blob(Texture2D texture, float scale)
{
this.texture = texture;
this.Scale = scale;
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(texture, position, null, Color.White, 0, Vector2.Zero, Scale, SpriteEffects.None, 0);
}
}
}
EDIT2:大写添加,同样的事情。错误:
Error 1 Invalid token '(' in class, struct, or interface member declaration C:'Users'Iurie'Documents'Visual Studio 2010'Projects'blob'blob'blob'Blob.cs 20 21 blob
Error 2 Invalid token ')' in class, struct, or interface member declaration C:'Users'Iurie'Documents'Visual Studio 2010'Projects'blob'blob'blob'Blob.cs 20 36 blob
Error 3 'blob.Blob.blobType' is a 'field' but is used like a 'type' C:'Users'Iurie'Documents'Visual Studio 2010'Projects'blob'blob'blob'Blob.cs 20 9 blob
Error 4 'Microsoft.Xna.Framework.Color.White' is a 'property' but is used like a 'type' C:'Users'Iurie'Documents'Visual Studio 2010'Projects'blob'blob'blob'Blob.cs 20 31 blob
在c#中不能在方法之外执行代码。要将一组默认条目添加到字典中,请将它们添加到Blob类的构造函数中。
不能在方法外部执行代码。要添加默认值,请在构造函数中调用add。
class Blob
{
public Texture2D texture;
public Dictionary<byte, Color> blobType = new Dictionary<byte, Color>();
public Blob()
{
blobType.add(1, Color.White);
}
}
这将做你正在寻找的:
class Blob
{
public Texture2D texture;
public Dictionary<byte, Color> blobType = new Dictionary<byte, Color>() { { 1, Color.White } };
public Vector2 position;
private float scale = 1;
public float Scale
{
get { return scale; }
set { scale = value; }
}
public Blob(Texture2D texture, float scale)
{
this.texture = texture;
this.Scale = scale;
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(texture, position, null, Color.White, 0, Vector2.Zero, Scale, SpriteEffects.None, 0);
}
}