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();
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); }