zoukankan      html  css  js  c++  java
  • 关于var和dynamic的使用之一

    不知道从.NET几点几开始有个这2个关键字,但是的确可以减少一些编程代码量,性能也还未知,仅记录对比2种不同的编码,得到相同的效果:

    一、使用一般的编码:

    先来3个Model类:

     1  public class NMenus
     2     {
     3         public List<MTitle> titles { get; set; }
     4 
     5         public NMenus()
     6         {
     7             titles = new List<MTitle>();
     8         }
     9     }
    10 
    11     public class MTitle
    12     {
    13         public int tid { get; set; }
    14         public string tname { get; set; }
    15         public string ticon { get; set; }
    16 
    17         public List<MTItem> items { get; set; }
    18 
    19         public MTitle()
    20         {
    21             items = new List<MTItem>();
    22         }
    23     }
    24 
    25     public class MTItem
    26     {
    27         public int iid { get; set; }
    28         public string iname { get; set; }
    29         public string iicon { get; set; }
    30         public string iurl { get; set; }
    31     }
    View Code

    再来看筛选并转JSON的代码:

     1                 NMenus menus = new NMenus();
     2                 foreach (SysNavMenu title in titles)
     3                 {
     4                     var items = from m in menusList
     5                                 where m.PMId == title.MId
     6                                 select new MTItem { iid = m.MId, iname = m.MText, iicon = m.Icon, iurl = m.MUrl };
     7                     var t = new MTitle { tid = title.MId, tname = title.MText, ticon = title.Icon, items = items.ToList<MTItem>() };
     8                     menus.titles.Add(t);
     9                 }
    10                 jsonMenus = JsonConvert.SerializeObject(menus);
    View Code

    二、使用var和dynamic的编码:

     1                 var menus = new { titles = new List<dynamic>() };
     2                 foreach (SysNavMenu title in titles)
     3                 {
     4                     var items = from m in menusList
     5                                 where m.PMId == title.MId
     6                                 select new { iid = m.MId, iname = m.MText, iicon = m.Icon, iurl = m.MUrl };
     7                     var t = new { tid = title.MId, tname = title.MText, ticon = title.Icon, items = items.ToList<dynamic>() };
     8                     menus.titles.Add(t);
     9                 }
    10                 jsonMenus = JsonConvert.SerializeObject(menus);
    View Code

    小结:一和二得到的最终jsonMenus字符串是相同的,唯一不同的就只有......

  • 相关阅读:
    Oracle EBS OM 发放订单
    Oracle EBS 创建 RMA
    Oracle EBS OM 保留订单
    Oracle EBS OM 删除订单行
    Oracle EBS OM 登记订单
    [转]Form中控制Tab画布不同标签间切换的方法
    [转]Form Builder:app_field.clear_dependent_fields和APP_FIELD.set_dependent_field的用法
    [整理]:oracle spool 用法
    ORA-20000:ORU-10027:buffer overflow,limit of 2000 bytes.
    [Form Builder]:CREATE_GROUP Built-in
  • 原文地址:https://www.cnblogs.com/yforg/p/4161188.html
Copyright © 2011-2022 走看看