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

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

匿名類的通用列表

匿名類的通用列表

慕田峪7331174 2019-08-30 10:57:23
匿名類的通用列表在C#3.0中,您可以使用以下語法創建匿名類var o = new { Id = 1, Name = "Foo" };有沒有辦法將這些匿名類添加到通用列表?例:var o = new { Id = 1, Name = "Foo" };var o1 = new { Id = 2, Name = "Bar" };List<var> list = new List<var>();list.Add(o);list.Add(o1);另一個例子:List<var> list = new List<var>();while (....){    ....    list.Add(new {Id = x, Name = y});    ....}
查看完整描述

3 回答

?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

你可以這樣做:


var list = new[] { o, o1 }.ToList();

有很多方法可以為這只貓設置皮膚,但基本上它們都會在某處使用類型推斷 - 這意味著你必須調用泛型方法(可能作為擴展方法)。另一個例子可能是:


public static List<T> CreateList<T>(params T[] elements)

{

     return new List<T>(elements);

}


var list = CreateList(o, o1);

你明白了:)


查看完整回答
反對 回復 2019-08-30
?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

有很多方法可以做到這一點,但是這里的一些響應是創建一個包含垃圾元素的列表,這需要您清除列表。


如果要查找泛型類型的空列表,請使用“針對元組列表選擇”來創建空列表。不會實例化任何元素。


這是創建空列表的單線程:


 var emptyList = new List<Tuple<int, string>>()

          .Select(t => new { Id = t.Item1, Name = t.Item2 }).ToList();

然后您可以使用您的泛型類型添加到它:


 emptyList.Add(new { Id = 1, Name = "foo" });

 emptyList.Add(new { Id = 2, Name = "bar" });

作為替代方案,您可以執行類似下面的操作來創建空列表(但是,我更喜歡第一個示例,因為您也可以將它用于填充的元組集合):


 var emptyList = new List<object>()

          .Select(t => new { Id = default(int), Name = default(string) }).ToList();   


查看完整回答
反對 回復 2019-08-30
  • 3 回答
  • 0 關注
  • 495 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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