2010-02-10 23 views
0

考慮一段代碼嘗試將匿名對象傳遞給C#中的另一個方法的場景。在C#中的方法之間傳遞和接收匿名對象

下面是一個例子:

ThreadPool.QueueUserWorkItem(new WaitCallback(RpvService.GetRpvDailyResults), 
          new { req = request, rpvDic = rpvDictionary } 
          ); 

你怎麼能接受在接收端的匿名對象?

+1

你真的不應該這樣做。傳遞一個元組。 – ChaosPandion 2010-02-10 17:12:45

+0

或者只是定義一個結構。 – 2010-02-10 17:15:37

回答

6

定義你自己的類或結構會好得多。

匿名對象只不過是編譯器爲您生成的類。嘗試在方法之間傳遞這是個壞主意,因爲它會導致問題。

自己定義類型沒有任何缺點。由於只有兩個對象,因此您還可以使用KeyValuePair(.NET 2)或Tuple(在.NET 4中)。

1

MSDN

匿名類型具有方法的範圍。要在方法邊界外傳遞匿名類型或包含匿名類型的集合,必須先將類型轉換爲對象。但是,這打破了匿名類型的強類型。如果您必須存儲查詢結果或將其傳遞到方法邊界之外,請考慮使用普通的命名結構或類而不是匿名類型。

0

那麼在C#4.0中,您可以用動態的,那麼你可以將它轉換爲你wnat

相關問題