我下面有if-else语句,并且我想对其进行更多优化。 有什么办法可以对其进行更多优化
if(entity[attributeName] != null)
{
if (entity.FormattedValues.Contains(attributeName) && entity[attributeName].GetType() != typeof(EntityReference))
{
return entity.FormattedValues[attributeName];
}
else
{
return GetDisplayObjectFromRawValue(entity[attributeName]);
}
}
else
{
if (entity.FormattedValues.Contains(attributeName))
{
return entity.FormattedValues[attributeName];
}
else
{
return GetDisplayObjectFromRawValue(entity[attributeName]);
}
}
答案 0 :(得分:1)
如果只是出于代码长度的考虑,您可以像这样重写它:
if (entity.FormattedValues.Contains(attributeName)
&& (entity[attributeName] == null || entity[attributeName].GetType() != typeof(EntityReference)))
{
return entity.FormattedValues[attributeName];
}
else
{
return GetDisplayObjectFromRawValue(entity[attributeName]);
}
或表示为三元声明:
return entity.FormattedValues.Contains(attributeName)
&& (entity[attributeName] == null || entity[attributeName].GetType() != typeof(EntityReference))
? entity.FormattedValues[attributeName]
: GetDisplayObjectFromRawValue(entity[attributeName]);
在示例here中,我将原始代码简化为布尔值:
v1
(实体[attributeName]!=空),v2
(entity.FormattedValues.Contains(attributeName))v3
(entity [attributeName] .GetType()!= typeof(EntityReference))请注意,通常应以简化代码的方式编写代码。
答案 1 :(得分:-1)
如果我理解您的意思是正确的,则可以这样重写代码:
if(entity[attributeName] != null)
{
return entity.FormattedValues.Contains(attributeName) && entity[attributeName].GetType() != typeof(EntityReference)
? entity.FormattedValues[attributeName]
: GetDisplayObjectFromRawValue(entity[attributeName]);
}
return entity.FormattedValues.Contains(attributeName)
? entity.FormattedValues[attributeName]
: GetDisplayObjectFromRawValue(entity[attributeName]);
P / S:这种方式与之无关:它使代码运行得更快,或者在运行时节省了内存或类似的东西。仅出于可读性。