[問題] 設計共用方法

看板C_Sharp作者 (呆呆要不要買降有)時間4年前 (2019/11/08 11:50), 4年前編輯推噓0(0012)
留言12則, 3人參與, 4年前最新討論串1/1
這是最近遇到的一個案例 主要就是有一個方法是在針對某個List去做一些處理 可能類似的像下面這樣 public Data { string Name{get;set;} int ID{get;set;}//資料主鍵 } List<Data> list = new List<Data>(new Data(){....}....); public List<Data> FilterList(List<Data> InputList) { return InputList.where(x=>x.ID > 0).ToList(); } 如果未來希望可以讓上面這個方法共用的話,紅色背景的地方就不能寫死 可能方法參數會有資料來源的List跟他在方法裡面的主鍵是什麼 因為我一點概念都沒有 不知道有沒有這方面的關鍵字還是資源可以參考的 --

07/28 16:53,
我朋友說 ADC不要第一個死
07/28 16:53

07/28 16:55,
我朋友說 ADC不要臉皮太薄
07/28 16:55

07/28 16:56,
我朋友說 ADC贏要衝輸要縮
07/28 16:56

07/28 16:57,
樓上抄電影賭神台詞XDDD
07/28 16:57

07/28 16:58,
我朋友說 ADC打你打得到的
07/28 16:58

07/28 16:59,
我朋友說我很帥
07/28 16:59
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.75.101.50 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1573185052.A.27E.html ※ 編輯: e23882 (211.75.101.50 臺灣), 11/08/2019 11:56:25

11/08 13:14, 4年前 , 1F
你可能想要:MyMethod<T>(T t) where T : IMyInterface
11/08 13:14, 1F

11/08 23:14, 4年前 , 2F
同樓上,用泛型方法 https://dotnetfiddle.net/orKsWv
11/08 23:14, 2F

11/09 12:34, 4年前 , 3F
你有沒有注意到你用的系統API就可以讓你自訂用法,List<T>
11/09 12:34, 3F

11/09 12:40, 4年前 , 4F
和Where(Func<T,bool>),照著這個用法就可以了
11/09 12:40, 4F

11/09 12:43, 4年前 , 5F
List<T> FilterList<T>(List<T> list, Func<T,bool> func)
11/09 12:43, 5F

11/09 12:44, 4年前 , 6F
{ return list.where(func).ToList(); }
11/09 12:44, 6F

11/09 12:44, 4年前 , 7F
當然也可以做點變化例如
11/09 12:44, 7F

11/09 12:44, 4年前 , 8F
List<T> FilterList<T>(List<T> list, Func<T,int> func)
11/09 12:44, 8F

11/09 12:45, 4年前 , 9F
{ return list.Where(i => func.Invoke(i) > 0).ToList();}
11/09 12:45, 9F

11/09 12:46, 4年前 , 10F
把跟特定類別有關的操作也變成參數,就可以傳任意類別
11/09 12:46, 10F

11/09 12:48, 4年前 , 11F
如果要限制的比較嚴格,你要傳的每個類別都是你自訂的,那
11/09 12:48, 11F

11/09 12:48, 4年前 , 12F
就用1、2樓的方法吧
11/09 12:48, 12F
學習了, 感謝各位大大回覆 ※ 編輯: e23882 (211.75.101.50 臺灣), 11/11/2019 17:45:37
文章代碼(AID): #1TnEOS9- (C_Sharp)