有没有一种方法可以在开发环境中查看数组元素及其索引值?

时间:2018-07-27 02:40:39

标签: c# visual-studio

我正在使用相当大的数组来存储常量,并且很难找到正确的值进行编辑,因为我不得不对它们进行计数。

在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)

       }

任何建议都会有所帮助。

1 个答案:

答案 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);