Example #1
0
        static void Main6(string[] args)
        {
            object up = new UPMaster()
            {
                Date = new Date()
                {
                    Like = int.MaxValue
                }
            };

            var dataValue1 = up.GetType().GetProperty("Date").GetValue(up);
            var likeValue1 = dataValue1.GetType().GetProperty("Like").GetValue(dataValue1);

            // dynamic 表示在运行时解析其操作的对象
            var likeValue2 = ((dynamic)up).Date.Like;

            // 性能对比
            Random          rand = new Random();
            List <UPMaster> ups  = Enumerable.Range(0, 1000_0000).Select(x => new UPMaster()
            {
                Date = new Date()
                {
                    Like = rand.Next(10_0000)
                }
            }).ToList();
Example #2
0
        public static void Main4(string[] args)
        {
            var up = new UPMaster()
            {
                Date = new Date()
                {
                    Like = 2
                }
            };

            // 方法一:
            var like1 = up.Date.Like;

            // 方法二:
            var like2 = 0;

            if (up != null && up.Date != null && up.Date.Like.HasValue)
            {
                like2 = up.Date.Like.Value;
            }

            // 方法三:
            var like3 = up?.Date?.Like ?? 0;

            // 注意:
            // ?? 运算符的优先级高于 ?:
            int?coin1 = 1;
            int?coin2 = 2;
            var like4 = coin2 > coin1 ? coin2 : coin1 ?? 0;

            var like5 = (coin2 > coin1 ? coin2 : coin1) ?? 0;

            WriteLine(like4);
            WriteLine(like5);
        }