优化-else语句Ask

时间:2018-11-08 05:26:40

标签: c# optimization

我下面有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]);
    }
}

2 个答案:

答案 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:这种方式与之无关:它使代码运行得更快,或者在运行时节省了内存或类似的东西。仅出于可读性。