6 Stimmen

Was ist der Unterschied zwischen C++0x-Konzepten und C#-Constraints?

C++0x führt ein Konzepte die es Ihnen ermöglichen, im Grunde einen Typ eines Typs zu definieren. Sie legt die erforderlichen Eigenschaften eines Typs fest .

In C# können Sie angeben Zwänge einer Gattung mit dem " wobei " Klausel.

Gibt es einen semantischen Unterschied zwischen ihnen?

Ich danke Ihnen.

9voto

Scott Dorman Punkte 41206

Dabei ist zu beachten, dass C++-Templates und C#-Generics nicht genau dasselbe sind. Siehe dies Antwort für weitere Einzelheiten zu diesen Unterschieden.

Aus der Seite, auf die Sie verlinkt haben, um C++0x-Konzepte zu erklären, klingt es so, als ob die Idee ist, dass man in C++ in der Lage sein möchte, anzugeben, dass der Vorlagentyp bestimmte Eigenschaften implementiert. In C# geht die Einschränkung weiter als das und zwingt den generischen Typ dazu, "von" dieser Einschränkung zu sein. Zum Beispiel der folgende C#-Code:

public GenericList<T> where T : IDisposable

besagt, dass jeder Typ, der anstelle von T muss die Schnittstelle IDisposable implementieren. Ähnlich verhält es sich mit dem folgenden Code:

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

public GenericList<T> where T : ABC

besagt, dass jeder Typ, der anstelle von T verwendet wird, vom Typ ABC oder abgeleitet von ABC sein muss.

Die Idee des C++0x-Konzepts besagt nur, dass der Typ, der anstelle von T verwendet wird, dieselben Eigenschaften haben muss, die durch ABC (oder IDisposable) definiert sind, und nicht, dass er von diesem Typ sein muss.

1 Stimmen

Wenn es fliegt wie eine Ente und quakt wie eine Ente, dann muss es eine Ente sein :-)

0 Stimmen

Es sei denn, es ist ein Konzept einer Ente. Es scheint einen feinen Unterschied zu geben, da C# die Tatsache erzwingt, dass der Typ der Einschränkung entsprechen muss, während ein Konzept einfach besagt, dass es diese Eigenschaften haben muss, aber nicht von diesem Typ sein muss.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X