Tag: 修饰符

函数的“静态新”修饰符有什么意义?

今天,我在遗留代码中找到了一些东西。 它具有一个function的“静态新”。 看起来像这样。 class Foo { public static void Do() { Console.WriteLine(“Foo.Do”); } } class Bar: Foo { public static new void Do() { Console.WriteLine(“Bar.Do”); } } 我不理解类Bar中的Do方法的静态new修饰符。 在C#中,只能使用类名而不是对象名来调用静态方法。 因此,我认为拥有“新”与否之间没有任何区别。 通常,如果不需要某些语法,C#只会将其视为错误。 任何人都知道为什么C#允许这样的语法?

C#中的新修饰符

MSDN说: 当用作修饰符时,new关键字显式隐藏从基类inheritance的成员。 隐藏inheritance的成员时,该成员的派生版本将替换基类版本。 虽然您可以在不使用new修饰符的情况下隐藏成员,但结果是警告。 如果使用new来显式隐藏成员,它会抑制此警告并记录派生版本旨在替代的事实。 例: class Base { int value; virtual bool Foo() { value++; } } class Derived : Base { int value; override bool Foo() { value++; } } 我是否必须在Derived.value声明中添加new修饰符? 有什么变化?

Keys.Shift和Keys.ShiftKey之间的区别

在我的应用程序中,我检测何时按下某个键并查看修改器是否为shift键,但Keys枚举器是否具有Shift和ShiftKey。 事件似乎总是发送Keys.Shift,但是有没有使用Keys.ShiftKey的情况? (同样的问题适用于Keys.Control和Keys.ControlKey) 感谢您的任何意见。