首页 > 解决方案 > 我可以让这段代码更简单、更小吗?C#

问题描述

正如您在下面的代码中看到的,我有 3 个 foreach 语句,我认为它的代码有点大。主要区别仅在于FieldName. 我希望有人可以使它更简单..

string fieldname;
string fieldLabel = "";

foreach (var u in data)
{
    fieldname = "field" + tag.getName() + "[" + msg.getMtId().getMessageType() + "]" + ".name";
    if (u.Key == fieldname)
    {
        fieldLabel = u.Value.ToString();
    }
}

if (fieldLabel == "")
{
    fieldname = "field" + tag.getName() + ".name";
    foreach (var u in data)
    {
        if (u.Key == fieldname)
        {
            fieldLabel = u.Value.ToString();
        }
        if (fieldLabel == "")
        {
            fieldname = "field" + tag.getName() + ".name";
        }
    }
}

if (fieldLabel == "")
{
    fieldname = "field" + tag.getName()+ "[" + msg.getMtId().getMessageType() + "]" + ".components";
    foreach (var u in data)
    {
        if (u.Key == fieldname)
        {
            fieldLabel = u.Value.ToString();
        }
    }
}

标签: c#

解决方案


假设数据是字典:

string fieldname = "field" + tag.getName() + "[" + msg.getMtId().getMessageType() + "]" + ".name";
string fieldLabel = "";

if(!data.ContainsKey(fieldname))
    fieldname = "field" + tag.getName() + ".name";
if (!data.ContainsKey(fieldname))
    fieldname = "field" + tag.getName() + "[" + msg.getMtId().getMessageType() + "]" + ".components";
if (data.ContainsKey(fieldname))
    fieldLabel = data[fieldname].ToString();

推荐阅读