public class LevelLighting
{
public static float nightvisionFogIntensity;
private static float auroraBorealisCurrentIntensity;
}
在C#中
这是这个类的一小部分代码,我想修改和实现的值是auroraBorealisCurrentIntensity,但是它是私有的,所以它告诉我在这个类中没有它的定义,有什么方法可以使用这个值,即使它是私有的吗?
我不能编辑上面的代码,只有我自己的代码需要引用上面的代码。
LevelLightning.nightvisionFogIntensity = 1f;
这是可行的,因为nightvisionFogIntensity是公共的
LevelLighting.auroraBorealisCurrentIntensity = 1f;
这不起作用,因为北极光电流强度是私有的。
谢谢你的帮助。
1条答案
按热度按时间sr4lhrrt1#
首先,我需要警告您,更改不应该更改的私有字段是危险的,可能导致目标对象的意外行为。
也就是说,如果你仍然想这么做,我认为唯一的方法是使用反射。我准备了一个小例子。下面是你的类的一个版本,它有一个方法
PrintBorealisValue()
来帮助我们显示修改后的结果:现在,让我们示例化这个类的一个对象,并更改它的私有变量:
同样值得注意的是,使用反射通常比不使用反射做同样的事情要慢(这是很明显的)。