比方说,我有类Character
,它具有以下属性的对象MyCharacter
:Health
,Mana
,MoveSpeed
。
从不同的方法,我得到它包含这些统计如下字符串:
"Health: 100 Mana: 100 MoveSpeed: 100"
我现在想这些统计数据分配给我的对象。我目前的尝试是这样的:分配值对象在for循环
// stats is the string I showed above
var statsArray = stats.Split(' ');
for (var i = 0; i < statsArray.Length; i++)
{
switch(statsArray[i])
{
default:
break;
case "Health:":
MyCharacter.Health = statsArray[i+1];
break;
case "Mana:":
MyCharacter.Mana = statsArray[i+1];
break;
case "MoveSpeed:":
MyCharacter.MoveSpeed = statsArray[i+1];
break;
}
}
现在的事情是,我知道统计的顺序。它总是健康,然后是法力,然后MoveSpeed。所以我正在寻找一种方法来简化它,即摆脱这个switch
(因为这里的实际Character
有18个统计数据,并且它看起来不太好看)。
我的想法是通过数组并告诉程序将其找到的第一个数字分配给Health,第二个数字分配给Mana,第三个分配给MoveSpeed。
这样的事情甚至可能吗?
你现在有使用开关情况下,任何关注/性能/错误?你为什么想改变?如果不是,对我而言,我更喜欢使用开关盒,它更容易进行调试和阅读 – User2012384
如果您知道正确的订单,为什么要将标签放在第一位?是否有一个理由没有例如'100,100,100'? – Luaan
只有这样,你才能够动态地加载属性,而不必事先知道它们的名字是[使用反射(与相关的性能命中和复杂度增加)](http://stackoverflow.com/questions/771524/how -slow-是反射)。 TBH我现在看到的并不是什么错。 [任何傻瓜都可以编写计算机可以理解的代码。好的程序员编写人类可以理解的代码](http:// stackoverflow。com/questions/522828/is-code-for-computers-or-for-people) – Liam