zoukankan      html  css  js  c++  java
  • ICE框架之Slice2CSharp映射---字典的映射

     在slice中我们有如下定义:

    Dictionary<long, Employee> EmployeeMap;

    Slice2CS编译器会将上面的字典生成同名的C#类:

           public class EmployeeMap : System.Collections.DictionaryBase,

                                                  System.ICloneable

        {

          public Employee this[long key] { get; set; }

          public System.Collections.ICollection Keys { get; }

          public System.Collections.ICollection Values { get; }

          public void AddRange(EmployeeMap d);

    public void Add(long key, Employee value);

          public void Remove(long key);

          public bool Contains(long key);

          public object Clone();

          public override int GetHashCode();

          public override bool Equals(object other);

          public static bool Equals(EmployeeMap lhs,

                                          EmployeeMap rhs);

          public static bool operator==(EmployeeMap lhs,

                                               EmployeeMap rhs);

          public static bool operator!=(EmployeeMap lhs,

                                               EmployeeMap rhs);

         }

           注意生成的类继承自DictionaryBase基类,所以也就拥有基类的方法。利用继承自基类的AddRange方法我们可以将一个字典的内容附加到另一个字典。如果目标字典和源字典的键有冲突的话,目标字典的键不会被覆盖。例如:

    Employee e1 = new Employee();

    e1.number = 42;

    e1.firstName = "Herb";

    e1.lastName = "Sutter";

    EmployeeMap em1 = new EmployeeMap();

    em[42] = e1;

    Employee e2 = new Employee();

    e2.number = 42;

    e2.firstName = "Stan";

    e2.lastName = "Lipmann";

    EmployeeMap em2 = new EmployeeMap();

    em[42] = e2;

    // Add contents of em2 to em1

      em1.AddRange(em2);

    // Equal keys preserve the original value

    Debug.Assert(em1[42].firstName.Equals("Herb"));

    生成的代码也提供了GetHashCodeEquals== !=方法(两个字典只有在它们包含的条目一样多,并且每个条目的键和值都相同时,才被认为是相等的)。

           生成的Clone方法依然是浅copy

  • 相关阅读:
    Windows永久修改pip安装源
    MySQL 超键 候选键 主键 外键是什么
    scrapy中间件
    crawlspider
    scrapy
    MongoDB 命令
    如何反扒
    表前缀sw_时
    自增序号,而且默认变量就是$i,也就是说在你的volist标签之内,可以直接使用$i
    html,if标签使用
  • 原文地址:https://www.cnblogs.com/zhangronghua/p/1196955.html
Copyright © 2011-2022 走看看