0

5分前に、をに変換する必要がある実際のシナリオがありGuid[]ましたobject[]

これを簡単かつ迅速に解決するには、次のように入力します。

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;
4

2 に答える 2

3

値型の配列の場合、それらはボックス化する必要があるため、メソッドなどinputArray.Cast<object>().ToArray()が必要です。

ただし、参照型の配列は暗黙的ににキャストできますobject[]

また、OfType拡張メソッドは、複数のタイプの配列がある場合のフィルタリングに役立ちます。

于 2012-07-31T06:58:04.230 に答える
0

私はあなたがそれを正しくやっていると思っています。これを確認してください:IEnumerable.Cast <>

キャストメソッドのドーズノートは、その名前から期待どおりに機能しているようです。

于 2012-07-31T07:02:34.313 に答える