亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何定義泛型類型的泛型集合類型

如何定義泛型類型的泛型集合類型

C#
喵喵時光機 2022-06-18 17:23:49
我有以下具有以下擴展方法的類:public static class CollectionsExtensions{    public static List<List<T>> Split<T>(this List<T> collection, int size)    {           if (size == 0)            throw new ArgumentException();        var chunks = new List<List<T>>();        var chunkCount = collection.Count / size;        if (collection.Count % size > 0)            chunkCount++;        for (var i = 0; i < chunkCount; i++)            chunks.Add(collection.Skip(i * size).Take(size).ToList());        return chunks;    }}我使用代碼分析器來幫助指出代碼異味和潛在缺陷,為此我建議將方法的返回類型切換為泛型類型。我嘗試將方法的簽名更改為如下所示:public static List<U<T>> Split<U,T>(this U<T> collection, int size) where U : IEnumerable<T>但不幸的是,它不起作用,所以,有沒有一種正確的方法來定義一個類,該方法可以返回一個 T 類型的 U 集合列表?
查看完整描述

2 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

當你這么說的時候:

where U : IEnumerable<T>

這意味著 thatU將是 a List<T>or some 繼承自 的類型IEnumerable<T>,因此這意味著您的方法的返回類型List<U>在這種情況下可以是相同的List<IEnumerable<T>>or List<List<T>>

在使用該方法時,編譯器將解析類型參數U以注入IEnumerable<T>提供T的類型。


查看完整回答
反對 回復 2022-06-18
?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

你可以這樣寫:

public static List<U> Split<U, T>(this U collection, int size) where U : IEnumerable<T>



查看完整回答
反對 回復 2022-06-18
  • 2 回答
  • 0 關注
  • 122 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號