C++0x の概念と C# の制約の違いは何ですか?
-
20-08-2019 - |
質問
C++0x の導入 概念, 、基本的に、型の型を定義できます。 型に必要なプロパティを指定します.
C# で指定できる 制約 ジェネリックの「」どこ」条項。
それらの間に意味上の違いはありますか?
ありがとう。
解決
留意すべき点の 1 つは、C++ テンプレートと C# ジェネリックはまったく同じではないということです。これを参照してください 答え それらの違いについて詳しくは、こちらをご覧ください。
C++0x の概念を説明するためにリンクしたページから、C++ では、テンプレート型が特定のプロパティを実装することを指定できるようにしたいという考えのようです。C# では、制約はさらに進んで、ジェネリック型がその制約の「の」ものになるように強制します。たとえば、次の C# コード:
public GenericList<T> where T : IDisposable
T の代わりに任意の型が使用されることを示します しなければならない IDisposable インターフェイスを実装します。同様に、次のコード:
public abstract class ABC {}
public class XYZ : ABC {}
public GenericList<T> where T : ABC
T の代わりに使用される型は、ABC 型であるか、ABC から派生したものでなければならないと述べています。
C++0x の概念の考え方では、T の代わりに使用される型が ABC (または IDisposable) で定義されているのと同じプロパティを持たなければならないとだけ述べており、その型でなければならないということではありません。
所属していません StackOverflow