【发布时间】:2016-07-15 13:42:38
【问题描述】:
我正在做一种小型 rpg(角色扮演游戏),在对话中会有影响玩家某些变量的决定。我想知道你是否知道比我更有效的方法:
public string Name, Nickname;
public int Age;
public void Decision(string Var, string Input)
{
if (Var == "Name")
Name = Input;
else if (Var == "Nickname")
Nickname = Input;
else if (Var == "Age")
Age = Convert.ToInt32(Input);
}
如您所见,只有 3 个变量很长,但还有更多……有没有办法更快?像这样的:
public void Decision(Variable Var, string Input)
{
Player.Var = input;
}
编辑:我将混合使用两个答案:
public string Nom, Prenom;
public int Age;
public void Decision(InfoType type, string Input)
{
switch (type)
{
case InfoType.Name:
Nom = Input;
break;
case InfoType.Prenom:
Prenom = Input;
break;
}
}
public void Decision(InfoType type, int Input)
{
switch (type)
{
case InfoType.Age:
Age = Convert.ToInt32(Input);
break;
}
}
【问题讨论】:
-
int Age永远不是== string Var尝试使用它来代替if(Age == Convert.ToInt32(Var) { Age = Convert.ToInt32(Input); } -
为什么不直接赋值给你想要影响的变量呢?大概如果您能够为“Var”传递一个值,您就知道要更改哪个变量。
-
老实说,这似乎是一个设计问题。为什么要尝试动态设置这些字段?
-
如果您只是想稍微清理一下代码,您可以使用
switch语句来分解您的个别情况。基于字典的方法可能也有效(即Properties[Var] = value),但在这种情况下,您最好单独设置它们中的每一个而不是使用单个函数,特别是因为它们的类型可能不同(即整数和字符串)。 -
因为我想把决定放在 XNA 文件中。
标签: c# variables parameters