重複の可能性:
有効な例を使用して c# に隠蔽されているメソッド。フレームワークに実装されているのはなぜですか? 実世界の利点は何ですか。
メソッドの非表示が c# でどのように役立つのか疑問に思っています。概念に飛び込むと、メソッドの隠蔽が混乱を招き、スパゲッティ コード スタイルに駆り立てられることがわかります。これにはいくつかの理由があり ます。
1- 派生クラスで新しいメソッドが必要な場合は、派生クラスで新しい名前の新しいメソッドを定義できます。
2-アップキャストを使用する場合、ポリモーフィックな方法で使用すると、期待される動作が実現されず、混乱を招く可能性があります。
(特に、基本クラスと派生クラスが異なるライブラリにあり、コードのどこかでそれらをポリモーフィックに使用したい場合、この奇妙な動作は非常に明白で明白になる可能性があります)
class Base
{
public void Method() { Console.WriteLine("I am Base Class"); }
}
class Derived: Base
{
public new void Method() { Console.WriteLine("I am Derived Class");}
}
class Program
{
static void Main(string[] args)
{
Base C = new Derived();
C.Method(); //output:"I am Base Class"
}
}
このような動作は混乱を招く可能性がありますが、「 Base 」で「 virtual」を使用し、「Derived 」で「override 」を使用した場合(ポリモーフィックな使用法を意味します)、出力は「I am Derived Class」でした。この出力は、私たちのほとんどが期待したものだと思います。
言い換えれば、階層では、ほとんどの開発者は、基本クラスの実装を隠したい派生クラス Not New メソッドのオーバーライドされたメソッドを期待していると思います。
C# 言語にメリットのない悪いことがなぜあるのか理解できませんか? 少なくとも、C# でメソッドを非表示にする最良の使用法を知りたいですか?
ご協力ありがとうございました