有人可以告诉我以下使用sealed
无法编译的原因吗?然而,如果我替换sealed
为final
Java 并将其编译为 Java,它就可以工作。
private sealed int compInt = 100;
public bool check(int someInt)
{
if (someInt > compInt)
{
return true;
}
return false;
}
这是因为final
在 Java 中意味着很多不同的东西,这取决于你在哪里使用它,而sealed
在 C# 中仅适用于类和继承的虚拟成员(方法、属性、事件)。
在Javafinal
中可以应用于:
sealed
.virtual
在派生类中声明一个方法,否则可以再次使用其他派生类来防止这种情况发生sealed
。这就是为什么你看到sealed
C# 中的成员比final
Java 中的成员少得多的原因。readonly
.Sealed
inC#
只能应用于引用类型,并且对继承树有影响。
实际上,标记为sealed
保证的类型是继承树中的最后一个“叶子”,或者简而言之,您不能从声明为 a 的类型派生sealed
。
public sealed class Child : Base
{
}
public class AnotherAgain : Child //THIS IS NOT ALLOWED
{
}
它不能应用于成员。
Tigran 的回答没有错,而 Joey 的回答有点不正确。
首先你可以看看这个页面:什么是C#中Java的final的等价物?.
关键字可以应用于
,但不能应用于变量或接口的方法。类不能被继承。戴法时,必须在公司。Every is ,所以不能被继承。检查此图像:sealed
class
instance method
property
sealed
sealed
override
struct
sealed
struct