Java の final に相当するものは C# で何ですか? 質問する

Java の final に相当するものは C# で何ですか? 質問する

finalC# におけるJava に相当するものは何ですか?

ベストアンサー1

finalキーワードはJavaでいくつかの用途があります。sealedそしてreadonlyC# のキーワードは、使用されるコンテキストに応じて異なります。

クラス

サブクラス化(定義されたクラスからの継承)を防ぐには:

ジャワ

public final class MyFinalClass {...}

C#

public sealed class MyFinalClass {...}

方法

メソッドのオーバーライドを防止しますvirtual

ジャワ

public class MyClass
{
    public final void myFinalMethod() {...}
}

C#

public class MyClass : MyBaseClass
{
    public sealed override void MyFinalMethod() {...}
}

Joachim Sauer が指摘しているように、ここでの 2 つの言語の顕著な違いは、Java ではデフォルトですべての非静的メソッドが としてマークされるのに対し、virtualC# では としてマークされることです。したがって、基本クラスで明示的にマークされたメソッドのさらなるオーバーライドを停止したい場合にのみ、C# で キーワードをsealed使用する必要があります。sealedvirtual

変数

変数を 1 回だけ割り当てることを許可するには:

ジャワ

public final double pi = 3.14; // essentially a constant

C#

public readonly double pi = 3.14; // essentially a constant

ちなみに、readonlyキーワードの効果はconst式はコンパイル時ではなく実行時readonlyに評価されるため、任意の式が許可されるという点でキーワードです。

おすすめ記事