我知道你可以用 C# 编写 Metro 应用程序。我的问题是是否每个类都需要密封关键字。我试图编译一个 Metro 应用程序,并从类中删除了 seal 关键字。它仍然编译。
那么在 Metro 应用程序和 C# 中,sealed 关键字究竟是如何使用的。背后的原因是什么。仅当您希望类以 .net 语言以外的另一种语言显示时才需要?
我知道你可以用 C# 编写 Metro 应用程序。我的问题是是否每个类都需要密封关键字。我试图编译一个 Metro 应用程序,并从类中删除了 seal 关键字。它仍然编译。
那么在 Metro 应用程序和 C# 中,sealed 关键字究竟是如何使用的。背后的原因是什么。仅当您希望类以 .net 语言以外的另一种语言显示时才需要?
是的,这是绝对要求。但仅适用于某些类,即您向在 WinRT 上运行的其他语言公开的那种。换句话说,当您创建自己想要使用的组件时,例如 Javascript 或 C++。
此类类有许多限制,其技术原因是 WinRT 运行在 COM 之上,而 COM 不支持实现继承。看起来确实如此,就像 XAML 类似乎使用继承一样。但这是 CLR 中内置的语言投影造成的错觉。这种错觉不是双向的。
一般来说,想要这样做是相当罕见的,您需要牢记一些限制。对于您自己的 C# 类,您编写的用于实现自己的商店应用程序的类没有此类限制,并且不需要密封。