我正在使用相当大的数组来存储常量,并且很难找到正确的值进行编辑,因为我不得不对它们进行计数。
在Visual Studio中是否可以选择以某种方式显示阵列? (例如,将鼠标悬停在元素上会显示其在数组中的索引)
这是我正在使用的东西:
public static IDictionary<string, Object[]> elementStatus = new Dictionary<string, Object[]>()
{
{"Fire", (new Object[spellinfoLength]
{"Burn",null,null,null, null, null, null, null,null,null,null, null, null, null, null, null, null, null, null, 0.5,null,"Fire", null}
)
},
{"Lightning", (new Object[spellinfoLength]
{ "Shock", null, null, null, null, null, null, null, null, null, null, null, null, 0.5,
null, null, null, null, null, null, null, null, null }
)
},
//etc... (25 more parallel arrays)
}
任何建议都会有所帮助。
答案 0 :(得分:0)
请考虑使用实际的类来表示该数据,而不只是对象数组。考虑一下如何使用此数组-您将不得不在各处广播东西。考虑到我们在谈论咒语,这虽然很有趣,但是在C#中 casting 通常是一种代码味道。关于C#的最好的事情之一就是强类型。但是通过对所有内容使用object
,您就可以将其丢弃。
您拥有spellinfoLength
的事实告诉我,您的意图是在代表咒语的每个数组中使用相同的数字。因此,您可以通过将默认值初始化为null一次,而不用通过构造函数在每个值上进行设置来实现。
作为附带的好处,您现在知道您正在使用Spell,而不仅仅是命名的对象数组。
public class Spell
{
public Spell(string name, string typeOfDamage, double damage)
{
Name=name;
TypeOfDamage=typeOfDamage; // consider using an enum?
Damage=damage;
// etc Add more properties here. I cant tell what type the other things in the array are
// since they are all null.
// some of these properties may be writable during their lifetime, so for those ones, add a 'set;' as well
}
public string Name { get; }
public string TypeOfDamage { get; }
public double Damage { get; }
}
现在,当您使用构造函数创建一个Spell时,每当您在方括号内按下逗号时,intellisense会告诉您该参数是什么。
P.S。您可以像这样基于Name
为它们制作字典...
public static IDictionary<string, Spell> elementStatus = new[]
{
new Spell("Fire", "Burn", 0.5),
new Spell("Lightning", "Shock", 0.5),
//etc... (25 more)
}.ToDictionary(x=>x.Name,y=>y);