如何在C#中使用List引用类型

这篇文章将为大家详细讲解有关如何在C#中使用List引用类型,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

10年积累的成都网站设计、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有法库免费网站建设让你可以放心的选择与我们合作。

一、反射

public static List Clone(this List list) where T : new()
  {
   List items = new List();
   foreach (var m in list)
   {
    var model = new T();
    var ps = model.GetType().GetProperties();
    var properties = m.GetType().GetProperties();
    foreach (var p in properties)
    {
     foreach (var pm in ps)
     {
      if (pm.Name == p.Name)
      {
       pm.SetValue(model, p.GetValue(m));
      }
     }
    }
    items.Add(model);
   }
   return items;
  }

二、序列化(依赖Newtonsoft.Json)

 public static List Clone(this List list) where T : new()
 {
 var str = JsonConvert.SerializeObject(list);
 return JsonConvert.DeserializeObject>(str);
 }

三、序列化(BinaryFormatter)

public static List Clone(this List list)
  {
   using (Stream objectStream = new MemoryStream())
   {
    IFormatter formatter = new BinaryFormatter();
    formatter.Serialize(objectStream, list);
    objectStream.Seek(0, SeekOrigin.Begin);
    return (List)formatter.Deserialize(objectStream);
   }
  }

测试

private void Test()
{
 List list = new List();
 list.Add(new NormalSetting { redisIp = "123" });
 List items = list.Clone();
 list[0].RedisIp = "456";
 logMessager.Show("{0}:{1}", list[0].RedisIp, items[0].RedisIp);
}

如何在C#中使用List引用类型

注意事项:

第一种方式无需任何依赖。

第二种方式需要Newtonsoft.Json,如果项目中没有用到它,不推荐使用这种方式。

第三种方式序要给引用类型实体加上[Serializable]特性

关于如何在C#中使用List引用类型就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


本文标题:如何在C#中使用List引用类型
转载注明:http://scyanting.com/article/jdjijj.html