将T List<T>
转换为List<I>
的最佳方法是什么?类型T实现接口I?
看来我无法进行这样的显式转换:
List<T> myListOfT;
List<I> myListOfI = (List<I>)myListOfT
;
答案 0 :(得分:1)
一种选择是使用Linq $arr = [["id" => 1, "title" => "aaa", "children" => []], ["id" => 2, "title" => "bbb", "children" => [["id" => 3, "title" => "ccc", "children" => []]]]];
function modifyTitle(&$arr, $id, $newVal) {
foreach($arr as &$e) {
if ($e["id"] == $id)
$e["title"] = $newVal;
modifyTitle($e["children"], $id, $newVal);
}
}
modifyTitle($arr, 3, "zzz");
print_r($arr); // now the original array children changed
。它将第一个集合的元素强制转换为您想要的类型。
https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.cast?view=netframework-4.7.2
IEnumerable<TResult> Cast<TResult>(this IEnumerable source)