c# - 我可以让这段代码更简单、更小吗?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();
}
}
}
解决方案
假设数据是字典:
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();
推荐阅读
- javascript - 按名称对对象数组进行排序
- python - 如何返回字典中可用的行数
- html - 当我将鼠标移到另一个内容上时,如何抓取弹出的内容?
- mule - Anypoint Studio -- 如何检查流的调用层次结构
- networking - docker-compose 关于 cloudbuild / 网络问题
- c# - C# 中 HashSet 的 contains 方法与 where 子句的性能
- javascript - 更改日期选择器中的格式(播出日期选择器)
- azure - Azure CI 管道忽略了我的 botdetect.xml 文件
- java - 如何在录制音频时减少静电噪音
- ansible - 如何在 ansible playbook 上指定每个任务的日志