2014-09-13 31 views
15

C++ ile aşina olmak ve C++ 11'in sunduğu bazı yeni özellikleri denedikten sonra C# ile daha aşina olmaya karar verdim.C# C++ 11'de decltype ile eşdeğer mi?

Beklendiği gibi, programlama ilkeleri benzerdir, ancak bazı özellikler farklıdır. Farklılıklar ve benzerlikler, sonra baktığım şey ve bu yüzden C# C++ 11 de decltype eşdeğer var mı sormaya karar verdim?

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

Ben öyle düşünmüyorum. Tür bilgisini yansıtma yoluyla kaybetme ile yapabilirsiniz, ancak bilinen türün tekrar yazmaya gerek kalmayacağını düşünmüyorum. – chris

+0

Biliyorsunuz 'decltype' çoğunlukla 'template's için, ve C# gibi daha zayıf tesisler var mı? – Deduplicator

+0

Daha zayıf mı? Hayır! Farklı? Emin. C#, * C++ * şablonları * gibi görünen, ancak farklı bir mekanizma olan * jenerik *. Özellik örtüşüyor olsa da. –

cevap

9

C# içinde decltype eşdeğeri yoktur.

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

Ama diğer verilen değişken veya ifadeyi anlaşılmaktadır türü ile storngly türde bir değişken bildirmek için izin verecek hiçbir gerçek sözdizimi özellik vardır:

Belki çıkarım decltype en yakın özellik olacaktır yazın.

+4

Hmm, çıkarım, 'auto'/'decltype (auto)' eşdeğeri olacaktır. –

+2

@ T.C. Peki, "en yakın" dediğimi kontrol edin ... gerçek cevap * Hayır * –

+0

C# 'de otomatik tür çıkarımını zaten biliyordum. C++ 11 de bu özelliğe sahiptir, ancak var yerine otomatik kullanmak zorundasınız. –