我有以下代碼列表<T>鑄造算法和性能方面的考慮
class Program
{
static void Main(string[] args)
{
List<A> aList = new List<A>();
var aObj = new A();
aObj.Go(aList.Cast<IB>());
}
}
class A : IB
{
public void Go(IEnumerable<IB> interfaceList)
{
foreach (IB ibby in interfaceList)
{
Console.WriteLine("Here");
}
}
}
interface IB
{
void Go(IEnumerable<IB> interfaceList);
}
}
我最初試圖通過一個列表但doesn't work。 經過SO的大量幫助,我發現傳遞IEnumerable是以.ofType(IB)形式獲取對象的唯一方法。
不幸的是,我在我的下面這行代碼會被執行數千次:
aList.Cast<IB>();
我想知道是否有人知道它是如何通過算法來實現(在IL)和它的時間順序是什麼。
也就是說,它是否比foreach循環更快地轉換每個項目,或者它正是它所做的?
編輯主類需要維護一個實際對象的列表。但讀者只能通過界面觸摸它們。
這可能會徹底改變這個問題,但是如果A需要有一個IB的內部列表,它正好反映了A的主要列表? – DevinB 2009-03-03 20:01:58
@devinb:我不確定你的意思。你的意思是作爲一個成員變量?你必須做一個通用的;那麼你可以使用相同的技巧。如果這還沒有足夠的信息,我建議你就這一點提出一個新的問題,提供更多細節。 – 2009-03-03 20:06:49