利用C#9.0中的record提高性能

打印 上一主题 下一主题

主题 962|帖子 962|积分 2896

C#9.0是2020年发布的,record特性还没用上的可以看过来,一起讨论下。
下面通过一个简朴的示例演示record带来的好处。
1. 通过一个示例引出题目
  1. public class Person
  2. {
  3.     public string Name { get; set }
  4. ...
  5. }
  6. public class ClassA
  7. {
  8.     public static List<Person> Items=new List<Person>{......};
  9.     public List<Person> GetList()
  10.     {
  11.         foreach(var item in Items)
  12.         {
  13.             item.Name=...
  14.             ...
  15.         }
  16.         return Items;
  17.     }
  18. }
复制代码
如上代码,就是想把Items中的值修改下再返回,但是这样就会静态变量Items中的值也修改掉,导致下次再用它时数据发生变化了,这不是我们希望的。
至于为什么要修改Items中的值,实际环境可能是单位转换、翻译等等。
尚有这里用静态变量,实际的环境可能是内存缓存(IMemoryCache)中取来的,我们并不想它原始值发生改变。
2. 传统解决办法

从前我们要解决这个题目,可能就是重新new新的对象,然后逐个属性和字段的赋值,这样写的题目是代码很啰嗦,不优雅。
尚有个解决办法就是深拷贝一份,再来修改,这个题目可能就是性能欠好了,内存和cpu都消耗的比力多。
可能尚有其他的,接待讨论。
3. record特性解决

[code]public record Person{    public string Name { get; set }...}public class ClassA{    public static List Items=new List{......};    public List GetList()    {        var items = Items.ToList();        for(var i=0;i
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表