2011-04-07 12 views
5

Selamlar Üstü Taşmaları,C'nin satır içi anonim yapı tanımı için eşdeğer bir C# sözdizimi var mı?

C içinde, yapı tipinin bu değişkene özgü olması için değişken bildirimi ile satır içi bir yapı tanımlayabileceğimizi biliyorum. Bu, tek başına türü tanımlamak yerine, değişkeni bu yapı tipine göre bildirmektir. Bu C# içinde mümkün mü?

Teşekkür ederiz!

+9

Aslında bazı C kodlarını görmeyi bekliyordum. Ne yazık ki, beklenti usulüne uygun olarak karşılanmadı ve bu yüzden büyük bir hayal kırıklığıyla aşıyorum. – BoltClock

+0

Bir örnek iyi olurdu. Ayrıca, bunu neden yapmanız gerekiyor, belki de C# problemini çözmenin başka bir yolu var mı? –

+4

Evet, C# 'da mümkündür, ancak böyle yazılmıştır. – Kobi

cevap

14

, ancak böyle bir anonim türünün bir örneği tanımlayabilirsiniz:

var x = new { SomeField = 1, SomeOtherField = "Two" }; 

Bu etkin aynı olacaktır, sana o özgü bir türünün bir örneği vererek değişken ve değişken kapsamı dışında kullanılamaz.

+0

** Not: * * Anonim tipler başka yöntemlere gönderilemez veya başka yöntemlere aktarılamaz, yani yalnızca tanımlanmış oldukları yöntem kapsamında var olurlar. Sınıf seviyesinde anonim bir değişkene sahip olmak mümkün değildir. –

+1

@Daniel: Doğru, ancak aynı veya eşdeğer kısıtlamaların C'deki anonim yapılara ve aslında herhangi bir statik olarak yazılan dile uygulanacağından emindim. "Eğer bir ismi yoksa, bundan bahsetmene izin verilmez". Mantıklı. – Avish

+0

@Daniel - Aslında, bunu jenerik bir yönteme aktarabilirsiniz, ancak çok çirkin. Aynı alanlar ile * diğer * anonim tiplerle de paylaşılacak, ancak yine büyük çirkinlik. Ama tabii ki, bir sınıf seviyesinde değil - eğer C++ buna izin verirse, C# 'nin benzer bir şey olduğunu sanmıyorum. – Kobi

1

Basit cevap: Hayır, bu mümkün değil.

Bu C# mümkün değildir