私は一般的な制約を利用して読んできましたが、私はジェネリックがstruct
,class
,new
,Class
およびInterface
に制限されることがわかりました。最初の3つの理由はかなり明らかです。しかし、私は実際にを理解することができませんなぜとは、クラスに制約する。すなわち特定のクラスに対する一般的な制約は、なぜですか?
class Foo<T> where T : Bar
class Foo<T> where T : IBar
これにより、Barとその子、IBarと実装者をそれぞれ制約できます。私たちはそのクラスやインターフェイスにただプログラムできませんか?これは基本的に多形のためであり、Microsoftエンジニアは役に立たない機能を実装するために馬鹿から遠いからです。
私には何が欠けていますか?
アップデート:私はそれはケースだとは思わないWhy use generic constraints in C#
:
私の質問はのための重複としてマークされています。
私はこの質問を徹底的に熟読して答えを見つけませんでした。それは一般的な制約の使用について議論しましたが、ここで私はなぜクラスやインターフェースに制約を課すのですか?それを直接プログラムするだけですか?
[this](https://msdn.microsoft.com/en-us/library/bb396189(v=vs.110).aspx)のようなものですか?任意のタイプをサポートする[別のアプローチ](https://msdn.microsoft.com/en-us/library/bb669096(v=vs.100).aspx)があります。 –
私にとっては、一般的なTから必要なときにクラスに便利です。新しいキーワード – Alexandr
でクラスを作成します。これは重複しません。なぜ 'Foo'を単に実装するのではなく、クラスに対してコード化されています。依頼者は、インターフェイスで使用する場合に制約が有効である理由を理解しますが、なぜそれらがクラスに対して有用であるのか理解できません。 – Lukazoid