4.4.2 空合并操作符让比较不再痛苦

Posted kikyoqiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.4.2 空合并操作符让比较不再痛苦相关的知识,希望对你有一定的参考价值。

    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadKey();
        }
        static int Compare(Product x, Product y)
        {
            return PartialComparer.Compare(x.Name, y.Name) ?? PartialComparer.Compare(x.Age, y.Age) ?? PartialComparer.Compare(x.Popularity, y.Popularity) ?? 0;
        }
    }
    public class Product
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Popularity { get; set; }
    }
    public static class PartialComparer
    {
        public static int? Compare<T>(T first, T second)
        {
            return Compare(Comparer<T>.Default, first, second);
        }
        public static int? Compare<T>(IComparer<T> compare, T first, T second)
        {
            int ret = compare.Compare(first, second);
            return ret == 0 ? new int?() : ret;
        }
        public static int? ReferenceCompare<T>(T first, T second) where T : class
        {
            return first == second ? 0 : first == null ? -1 : second == null ? 1 : new int?();
        }
    }

 

以上是关于4.4.2 空合并操作符让比较不再痛苦的主要内容,如果未能解决你的问题,请参考以下文章

让我们一起搭建samba服务,共享文件不再痛苦

让我们一起搭建samba服务,共享文件不再痛苦

让我们一起搭建samba服务,共享文件不再痛苦

让我们一起搭建samba服务,共享文件不再痛苦

Kotlin空安全 ④ ( 手动空安全管理 | 空合并操作符 ?: | 空合并操作符与 let 函数结合使用 )

Kotlin空安全总结 ( 变量可空性 | 手动空安全管理 | 空安全调用操作符 | 非空断言操作符 | 空合并操作符 | 空指针异常处理 | 先决条件函数判空 )