Frage

C ++ 0x einleitet Konzepte , mit denen Sie definieren, im Grunde eine Art von einem Typ. es die Eigenschaften eines Typs erforderlich angibt.

C # können Sie angeben, Einschränkungen ein Generikums mit dem " wobei " -Klausel.

Gibt es einen semantischen Unterschied zwischen ihnen?

Danke.

War es hilfreich?

Lösung

Eine Sache im Auge zu behalten ist, dass C ++ Vorlagen und C # Generika sind nicht genau das gleiche. Sehen Sie diese beantworten um weitere Details zu diesen Unterschieden.

Von der Seite, die Sie 0x Konzepte zu erklären, C ++ verknüpft, es klingt wie die Idee ist, dass in C ++ Sie angeben können, möchten, dass der Vorlagentyp bestimmte Eigenschaften implementiert. In C #, geht die Einschränkung weiter als das, und zwingt den generischen Typen „von“ dieser Einschränkung zu sein. Zum Beispiel kann der folgenden C # -Code:

public GenericList<T> where T : IDisposable

sagt, dass jede Art anstelle von T verwendet muss die IDisposable-Schnittstelle implementieren. Ebenso der folgende Code:

public abstract class ABC {}
public class XYZ : ABC {}

public GenericList<T> where T : ABC

sagt, dass jede Art anstelle von T verwendet vom Typ ABC oder von ABC abgeleitet sein muss.

Die C ++ 0x Konzeptidee sagt nur, dass die Art anstelle von T verwendet werden, muß die gleichen Eigenschaften hat wie ABC (oder IDisposable) definierte nicht, dass es diesen Typen sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top