• .Net 相等性的测试题目,看你基础牢不牢


    有这么一个简单类People:

        class People
        {
            
    public int Id { getset; }
            
    public string Name { getset; }

            
    public override string ToString()
            {
                
    return string.Format("Id: {0}; Name: {1}", Id, Name);
            }
        }

    请看以下代码,给出b0~b6的值(b6的相关代码不熟悉的话,可以只给出b0~b5的值):

        private static void Test()
        {
            People[] ps0 
    = new People[]{
                
    new People{ Id=1, Name = "aaa"},
                
    new People{ Id=2, Name = "bbb"},
                
    new People{ Id=3, Name = "ccc"}
            };
            List
    <People> ps1 = new List<People>(ps0);
            Collection
    <People> ps2 = new Collection<People>(ps1);
            IEnumerable
    <People> ps3 = YeildRet(ps0);
            Dictionary
    <People, string> dict = ps0.ToDictionary(p=>p, p=>p.Name);

            People p0 
    = new People { Id = 1, Name = "aaa" };

            
    //
            bool b0 = p0 == ps0[0];
            
    bool b1 = p0.Equals(ps0[0]);
            
    //
            bool b2 = ps0.Contains(p0);
            
    bool b3 = ps1.Contains(p0);
            
    bool b4 = ps2.Contains(p0);
            
    bool b5 = ps3.Contains(p0);
            
    //
            bool b6 = dict.ContainsKey(p0);
        }

        
    private static IEnumerable<People> YeildRet(People[] peoples)
        {
                
    yield return peoples[0];
                
    yield return peoples[1];
                
    yield return peoples[2];
        }

     下面会把People类逐步改进,同样请给出每个版本的b0~b6的值,一个版本一个版本做,做完一个版本才能展开下一个版本。不要作弊奥!

    People版本二

    再改进,

    People版本三

    再改进

    People版本四

    再改进:

    People版本五

     说明:代码仅供测试用,没有进行null值处理。

  • 相关阅读:
    js中this的用法
    js原型链与继承(初体验)
    关于C语言指针中的p++与p+i
    react todolist
    react表单提交
    react条件渲染
    react初体验
    初次接触express
    阿里内推在线编程题(返回元素的选择器)
    模块初始化
  • 原文地址:https://www.cnblogs.com/ldp615/p/1560543.html
Copyright © 2020-2023  润新知