2011-04-07 35 views
5

問候溢出,C的內聯匿名結構定義是否有等效的C#語法?

我知道在C中我們可以用變量聲明內聯定義一個結構,以便結構類型是特定於這個變量的。這不是單獨定義類型,而是將變量聲明爲該結構類型。這在C#中可能嗎?

謝謝!

+9

我期待着看到一些C代碼。唉,期望沒有得到適當的滿足,我因此非常失望地克服了。 – BoltClock 2011-04-07 09:46:40

+0

一個例子會很好。另外,爲什麼你需要這樣做,也許有另一種解決C#中的問題的方式? – 2011-04-07 09:47:46

+4

是的,它可能在C#中,但它是這樣寫的。 – Kobi 2011-04-07 09:47:48

回答

14

這不是在C#中可能的,但是你可以定義一個匿名類型的實例是這樣的:

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

這將有效地是相同的,給你一個類型的實例,它是特定於該變量並且不能在變量的作用域外使用。

+0

** * *匿名類型不能從其他方法返回或傳遞給其他方法,即它們只存在於它們定義的方法範圍內。在類級別上不可能具有匿名類型的變量。 – 2011-04-07 09:48:40

+1

@Daniel:的確,儘管我很確定相同或等同的限制適用於C中的匿名結構,實際上也適用於任何靜態類型的語言。 「如果它沒有名字,你不能提及它」。說得通。 – Avish 2011-04-07 09:52:21

+0

@Daniel - 實際上,你可以將它傳遞給一個通用的方法,但它非常難看。它也將與*其他*匿名類型共享相同的字段,但同樣也是很醜陋的。但顯然,不是在課堂上 - 如果C++允許的話,我不認爲C#有任何相似之處。 – Kobi 2011-04-07 09:52:59

1

簡單的回答:不,這是不可能的。