5分鐘前,我有一個真實場景,我需要將Guid[]
轉換爲object[]
。將數組從T1類型轉換爲T2類型的處理有效方式
死者簡單快捷的出路,這是鍵入:
var dataset = inputArray.Select(item => (object)item).ToArray();
可讀和一切,但我不知道這是非常有效的(當然也可以,編譯器優化它的情況下一點點)。
你會建議最好從類型到類型(假設它可以在之間轉換,跳過整數解析等)?
編輯:Cast<T>
擴展方法當然也可以使用。
var listOfGuids = new Guid[]{Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid()};
var listOfStrings = new string[]{"foo", "bar"};
var objectListGuidsLinq = listOfGuids.Cast<object>().ToArray();
var objectListStringsLinq = listOfStrings.Cast<object>().ToArray();
var objectListStringsDirect = (object[]) listOfStrings;
Guid不被視爲引用類型,因此對於該示例,數組不能隱式轉換爲object []。我猜對於值類型,最有效的方法是使用Select或Cast <> linq方法。 – Henrik 2012-08-01 08:37:23
是的,我忘了提及,Guid是一種值類型。此外,還有'Array.CopyTo'和'Array.Copy'方法,但我做了一個快速的基準測試,並且在Linq方法中沒有看到任何顯着的性能差異。 – 2012-08-01 09:02:19