2009-10-05 99 views
3

我可以創建一個匿名類型變量,然後添加更多的屬性?創建一個動態匿名類型變量

E.g. var x = new { Name = "Ahmed" };並且想要添加Age到它? 我該怎麼做?

另一個問題:我在某些博客上看到了一個類型AnonymousType這個類的名字空間是什麼?這裏是我的例子http://www.codeproject.com/KB/cs/AnonymousTypesInCSharp.aspx

+3

這樣的對象通常被稱爲「expando對象」。 C#沒有*實現* expando對象,儘管C#4將支持*通過「dynamic」關鍵字調用* expando對象。考慮使用Python或JScript或其他本地支持expando對象的語言(如果這是您需要的)。 – 2009-10-05 14:18:34

回答

6

第一個問題 - 你不能。

第二個問題 - AnonymousType是該文章作者創建的類型。您必須下載他的項目來源才能使用該類型。

0

不,你不能。

第二個問題:沒有這樣的事情,它可能指的是你無法訪問的編譯器生成的類。

0

不,這對您的應用程序來說效率不高。 你相信你不想介紹某種類嗎?

using System; 
class Generic{ 

    public void doSomething(){} 

    private string name; 
    private string _othreFeature; 

} 

您可以隨時使用新功能擴展它。

0

這是一個完全合乎邏輯的問題......我使用Java和C#都是這樣,這是我的一個大寵物...事實上幾乎所有的語言都有某種匿名類型lol ... PHP,JavaScript,C#,vb(全部)和列表繼續..

這是一個非常有用的功能,當你基本上把數據扔進一個對象,並且你不需要爲它創建一個類。

物質其實這正是LINQ利用..

var someObject (can be interable/Enumerable) = 
    from p in products 
    where p.id == 123 
    select new { productid }; 

等等等等,你明白我的意思..這是非常有用的... :-)

乾杯!

+0

我知道這是非常古老的,但你的最後一行似乎是錯誤的,我只是爲其他讀者澄清。如果你只是想從LINQ語句中得到產品ID,你不會使用select(prod => new {prod.ID}),你只需要選擇(prod =?prod.ID),它不使用匿名如果你想把名字與ID配對,那麼是的,你會使用新的{prod.Name,prod.ID}這將是一個匿名類型。我再次... ...非常舊但仍然。 – MarqueIV 2013-04-18 17:05:50