我正在研究一些Unity C#脚本。
public class SomeClass {
public static float radius;
}
我有一个class
包含很多static
个变量(我知道static
个变量可能是一个不好的做法,但我不是实现这些变量的人{{1}变量,我需要使用它们。)
在另一个脚本中,我需要更改这些变量的值。
所以我使用static
访问它们,但我想使用它们的名称访问它们:
SomeClass.radius = val
这似乎微不足道,但无法弄清楚如何使其工作(我是C#的新手)。我是否需要一个函数来返回包含SomeFunction(string name) { theVariableCorespondingToTheName = val }
字段的class
变量的ref?
答案 0 :(得分:1)
如果你真的无法改变设计,你必须使用反射。但是,编译器将不再知道所有字段都被键入为浮点数,并且您将获得大量样板代码并且会失去很多性能。 根据您使用的.NET版本,Reflection的确切语法是不同的。
如果允许您更改字段,那么更好的解决方案是按照Tim Schmelter在评论中的建议创建一个Dictionary<string, float>
。
答案 1 :(得分:1)
显然,可以改进具有大量静力学的设计。但是,您似乎无法直接控制它,因此这里有一种方法可以使用反射来完成您的需要:
typeof(SomeClass).GetField("radius").SetValue(null, val);