警告 CS0114:“AnApp.AppDelegate.Self”隐藏继承的成员

本文关键字:隐藏 继承 成员 Self AppDelegate CS0114 AnApp 警告 | 更新日期: 2023-09-27 18:37:16

今天我更新到了Xamarin.iOS 8.6.0.51。现在我收到以下警告:

警告 CS0114:AnApp.AppDelegate.Self' hides inherited member MonoTouch.Foundation.NSObject.Self'。使当前成员 重写该实现,添加覆盖关键字。否则添加 新关键字 (CS0114)

在我的AppDelegate.cs中,我定义了以下属性/字段:

public static AppDelegate Self { get; private set; }

然后我以这种方式设置它以获取对应用程序委托的引用(如此线程中提出的):

AppDelegate.Self = this;

这在更新之前有效。我使用它来实例化故事板中的一些视图控制器和其他一些东西(网络活动指示器,...我必须更改什么才能使其正常工作?我不再需要这个了,还是应该重命名 Self

警告 CS0114:“AnApp.AppDelegate.Self”隐藏继承的成员

这意味着AppDelegate的基类也有名为Self的成员,编译器会警告您可能在不知不觉中隐藏了基类成员。

如果您知道自己在做什么,则可以使用new关键字安全地禁止显示警告。

public static new AppDelegate Self { get; private set; }

这绝对没有任何区别,如果没有new关键字,您的应用程序也将正常工作。它只是告诉 c# 编译器我有意对成员使用相同的名称,并且我有兴趣隐藏基类成员。