sealed次のの使用がコンパイルされない理由として誰か教えてください。一方、Javaに置き換えsealedてfinalコンパイルすると、動作します。
private sealed int compInt = 100;
public bool check(int someInt)
{
if (someInt > compInt)
{
return true;
}
return false;
}
これfinalは、Javaでは使用場所によってさまざまな意味がありますがsealed、C#ではクラスと継承された仮想メンバー(メソッド、プロパティ、イベント)にのみ適用されるためです。
Javaではfinal以下に適用できます。
sealed。virtualことはできません。sealedそのため、C#のメンバーはJavaのメンバーsealedよりもはるかに少なくなっています。finalreadonly。Sealedinは参照型C#にのみ適用でき、継承ツリーに影響を与えます。
実際には、継承ツリーの最後の「リーフ」であることが保証されているとマークされたタイプsealed、つまり、のように宣言されたタイプから派生することはできませんsealed。
public sealed class Child : Base
{
}
public class AnotherAgain : Child //THIS IS NOT ALLOWED
{
}
会員には適用できません。
ジョーイの答えは少し間違っていますが、ティグランの答えは間違っていません。
まず、このページを調べることができます。C#でのJavaのファイナルに相当するものは何ですか?。
キーワードはに適用できますが
、変数やインターフェイスのメソッドには適用できません。のクラスは継承できません。メソッドを使用する場合は、社内で行う必要があります。すべてがであるため、継承できません。この画像を確認してください:sealedclassinstance methodpropertysealedsealedoverridestructsealedstruct