在C#中按名称获取变量

And*_*eas 11 c# variables resolve

有没有办法通过知道变量的名称来获取变量的值,如下所示:

double temp = (double)MyClass.GetValue("VariableName");
Run Code Online (Sandbox Code Playgroud)

当我通常会像这样访问变量时

double temp = MyClass.VariableName;
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 26

你可以使用反射.例如,如果PropertyName是公共属性,MyClass并且您拥有此类的实例,则可以:

MyClass myClassInstance = ...
double temp = (double)typeof(MyClass).GetProperty("PropertyName").GetValue(myClassInstance, null);
Run Code Online (Sandbox Code Playgroud)

如果是公共领域:

MyClass myClassInstance = ...
double temp = (double)typeof(MyClass).GetField("FieldName").GetValue(myClassInstance);
Run Code Online (Sandbox Code Playgroud)

当然,你应该意识到反射不是免费的.与直接属性/字段访问相比,可能会有性能损失.

  • 小心; 经常使用它可能会很慢. (2认同)
  • @Andreas:我打赌.10个案例的开关滤波器与3个案例的开关滤波器一样慢. (2认同)