在我的一个应用程序中,我收到了一个像这样构建的数据结构:
父母: { X, y, z 儿童[]: { X, ÿ } }
我选择父对象,然后遍历所有子对象。我使用这些数据来创建第三个对象。
如您所见,父对象的某些属性也可以在子对象中找到。父对象始终具有优先级,因此,每当遍历子对象时,我都需要检查是否具有属性x&y的值@父级别。如果这样做,那么我将使用父级的值,否则,将使用子级的值。
最初,我为我创建了用于这些检查的单独方法。我有一个整数,布尔值和字符串。
在拉取请求中,我被要求删除那些方法并使用?。我的比较运算符。我个人发现我的原始工作方式更具可读性,但是还可以。
现在,对于字符串比较,我发现要使用的表达式有点长:
B = parent.X != null ? (!string.IsNullOrEmpty(parent.X.XName) ? parent.X.XName
: child.X != null ? (!string.IsNullOrEmpty(child.X.XName) ? child.X.XName
: string.Empty)
: string.Empty)
: (child.X != null ? !string.IsNullOrEmpty(child.X.XName) ? child.X.XName
: string.Empty;
我想知道是否有简化方法?
答案 0 :(得分:0)
var B = !string.IsNullOrEmpty(parent.X?.XName)
? parent.X.XName // parent.X is not null and parent.X.XName is neither null nor empty
: (child.X?.XName ?? string.Empty);
这应该产生预期的输出。
即:
parent.X.XName
,如果parent.X
不是null
并且parent.X.XName
不是null
或为空child.X.XName
(如果以上为假,并且child.X
和child.X.XName
不是null
string.Empty
(如果以上为假)与以下内容相同:
var B = parent.X != null && !string.IsNullOrEmpty(parent.X.XName)
? parent.X.XName
: child.X != null && child.X.XName != null
? child.X.XName
: string.Empty;