2014-09-13 11 views
15

Da ich bereits mit C++ vertraut bin und einige der neuen Funktionen von C++ 11 getestet habe, entschied ich mich, C# besser zu verstehen.Hat C# in C++ 11 ein Äquivalent zu declltype?

Wie erwartet, ähneln Programmierprinzipien, aber einige der Funktionen sind unterschiedlich. Die Unterschiede und Ähnlichkeiten sind, was ich kümmere und deshalb entschied ich mich zu fragen, ob C# ein Äquivalent zu declype in C++ 11 hat?

int x = 4; 
decltype(x) y = 16; 
+0

Ich glaube nicht. Sie könnten das tun, indem Sie die Typinformationen durch Reflektion verlieren, aber ich denke nicht, dass Sie den bekannten Typ beibehalten können, ohne ihn erneut eingeben zu müssen. – chris

+0

Sie wissen 'declltype' ist hauptsächlich für' template' gedacht, und das ist einer der Bereiche, in denen sie sich stark unterscheiden, da C# dort weit schwächere Möglichkeiten hat? – Deduplicator

+0

Schwächer? Nee. Anders? Sicher. C# hat * Generics *, die aussehen wie C++ * Templates *, sind aber ein anderer Mechanismus. Die Feature-Sets überschneiden sich jedoch. –

Antwort

9

In C# gibt es kein Äquivalent zu decltype.

Vielleicht Typinferenz wäre die nächste Funktion decltype sein:

int x = 4; 
var y = x + 1; 

Aber es gibt keine tatsächliche Syntax-Funktion, die eine storngly typisierte Variablen mit dem Typ von anderen gegebenen Variable oder ein Ausdruck abgeleitet zu erklären erlauben würde.

+4

Hmm, Typ Inferenz wäre das Äquivalent von 'auto' /' declltype (auto) '. –

+2

@ T.C. Nun, überprüfen Sie, dass ich sagte "der nächste" ... die tatsächliche Antwort ist * nein * –

+0

Ich war bereits vertraut mit automatischen Typ Rückschluss in C#. C++ 11 hat auch diese Funktion, aber Sie müssen Auto anstelle von Var verwenden. –