2014-09-13 19 views
15

Essendo già familiare con C++ e dopo aver provato alcune delle nuove funzionalità offerte da C++ 11, ho deciso di familiarizzare con C#.C# ha un equivalente a decltype in C++ 11?

Come previsto, i principi di programmazione sono simili, ma alcune delle funzionalità sono diverse. Le differenze e le similitudini sono ciò che sto cercando e quindi ho deciso di chiedere se C# ha un equivalente a decltype in C++ 11?

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

Io non la penso così. Potresti farlo perdendo le informazioni sul tipo tramite riflessione, ma non penso che tu possa mantenere il tipo conosciuto senza doverlo digitare di nuovo. – chris

+0

Sapete che 'decltype' è per lo più per' template's, e questa è una delle aree in cui differiscono fortemente, dato che C# ha strutture molto più deboli lì? – Deduplicator

+0

Più debole? No. Diverso? Sicuro. C# ha * generics *, che assomigliano a C++ * templates * ma sono un meccanismo diverso. Le funzionalità si sovrappongono però. –

risposta

9

In C# non c'è equivalente a decltype.

Forse inferenza di tipo sarebbe la caratteristica più vicino a decltype:

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

Ma non c'è nessuna caratteristica sintassi reale che permettesse di dichiarare una variabile storngly tipizzato con il tipo dedotto dagli altri dato variabile o espressione.

+4

Hmm, l'inferenza di tipo sarebbe l'equivalente di 'auto' /' decltype (auto) '. –

+2

@ T.C. Bene, controlla che ho detto "il più vicino" ... la risposta effettiva è * no * –

+0

Avevo già familiarità con l'inferenza di tipo automatica in C#. C++ 11 ha anche questa caratteristica, ma devi usare auto invece di var. –