所以我遇到了一些遗留的C#代码,其中包含一些带有一些静态变量的类。
public class TMP_PARAM
{
// stores params and signals of test
public static List<filter> data_p;
public static List<filter> data_p_save;
public static List<filter> data_s;
public static List<filter> data_s_save;
public List<filter> data_operation_p
{
get
{
return data_p;
}
set
{
data_p = value;
}
}
然而,当他们有数据时,我感到很困惑,即使代码中没有设置它们,即:
Automobile.Drive();
int i = Automobile.NumberOfWheels;
我发现变量是由不同的对象通过set calls
设置的TMP_PARAM tmp = new TMP_PARAM();
tmp.data_operation_p = cast_list;
我的问题是为什么C#编译器允许这样做?不应该通过类接口访问静态类变量吗?
答案 0 :(得分:0)
您将access modifiers与static
混淆。代码将它们标记为public
,因此可以从外部访问它们。将它们标记为private
,然后初始化必须在class
定义内。