我有一个带有静态字段和静态函数的类,例如这样
public class A {
protected static string[] _eventField = new[] { "SomeValue" };
public static TOut DoSomethingThatDependsOnEventField(TIn input){
//output depends on input and the static _eventField
}
public class Nested1: A {
protected new static string[] _eventField = new[] { "SomethingDifferent" };
}
public class Nested2 : A {
protected new static string[] _eventField = new[] { "SomethingElse" };
}
}
该静态方法的输出和输入类型在这里并不重要,唯一相关的是输出——当然,尽管依赖于输入——取决于静态字段的内容。该方法的实现在派生类中根本没有改变,我想要的只是改变那个非常静态的字段。但是每当我打电话时
var res1 = A.Nested1.DoSomethingThatDependsOnEventField(...);
或 var res2 = A.Nested2.DoSomethingThatDependsOnEventField(...);
从方法中引用了基类 A 中不正确的静态字段。也就是说,静态字段的预期“隐藏”/“重新定义”protected new static string[] _eventField = ...
不起作用 -为什么会这样?