我知道这听起来有点奇怪,但有可能将字符串转换为局部变量,如下所示:
String actionName = "eat";
(local variable)actionName;
Pet.actionName;
//and computer will read it as Pet.eat;
Run Code Online (Sandbox Code Playgroud)
在开关中它看起来像那样:
String actionName = "eat";
switch (actionName)
{
eat:
return Pet.eat;
default:
return;
}
Run Code Online (Sandbox Code Playgroud)
你可以使用反射:
String actionName = "eat"; // Actually, property/field name
// looks like you want to get static property
// without creating Pet instance
var result = typeof(Pet).GetProperty(actionName, BindingFlags.Static | BindingFlags.Public).GetValue(null);
Run Code Online (Sandbox Code Playgroud)
如果actionName实际上是一个字段(不是属性),语法应该稍微改变一下:
var result = typeof(Pet).GetField(actionName, BindingFlags.Static | BindingFlags.Public).GetValue(null);
Run Code Online (Sandbox Code Playgroud)
编辑:如果Pet只是一个枚举,你可以解析它
String actionName = "eat";
Pet result = (Pet) (Enum.Parse(typeof(Pet), actionName));
Run Code Online (Sandbox Code Playgroud)