我正在阅读有关制作自定义主体的教程,我遇到了代码:
public class BaseController : Controller
{
protected virtual new UserPrincipal User
{
get { return HttpContext.User as UserPrincipal; }
}
}
Run Code Online (Sandbox Code Playgroud)
"受保护的虚拟新"究竟是如何运作的?
关键词"新"是最让我困惑的.
您的关键问题: “关键字new是让我最困惑的地方。”
简短答案: new和override是互斥的。new用于替换从基类继承的类成员。相反,override用于扩展成员的基类实现。
来自新的修饰符(C#参考) (Visual Studio 2013):
在同一成员上同时使用new和override是错误的,因为这两个修饰符具有互斥的含义。该新的 功能键可以创建具有相同名称的新成员,导致原始成员变为隐藏。该覆盖修饰符扩展了继承的成员实施。