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
よりもはるかに少なくなっています。final
readonly
。Sealed
inは参照型C#
にのみ適用でき、継承ツリーに影響を与えます。
実際には、継承ツリーの最後の「リーフ」であることが保証されているとマークされたタイプsealed
、つまり、のように宣言されたタイプから派生することはできませんsealed
。
public sealed class Child : Base
{
}
public class AnotherAgain : Child //THIS IS NOT ALLOWED
{
}
会員には適用できません。
ジョーイの答えは少し間違っていますが、ティグランの答えは間違っていません。
まず、このページを調べることができます。C#でのJavaのファイナルに相当するものは何ですか?。
キーワードはに適用できますが
、変数やインターフェイスのメソッドには適用できません。のクラスは継承できません。メソッドを使用する場合は、社内で行う必要があります。すべてがであるため、継承できません。この画像を確認してください:sealed
class
instance method
property
sealed
sealed
override
struct
sealed
struct