gpt4 book ai didi

algorithm - 如何摆脱重复的 if 语句?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:38:47 26 4
gpt4 key购买 nike

在查看我正在处理的项目的一些代码时,我遇到了一个非常重要的方法以下内容:

public string DataField(int id, string fieldName)
{
var data = _dataRepository.Find(id);
if (data != null)
{
if (data.A == null)
{
data.A = fieldName;
_dataRepository.InsertOrUpdate(data);
return "A";
}

if (data.B == null)
{
data.B = fieldName;
_dataRepository.InsertOrUpdate(data);
return "B";
}

// keep going data.C through data.Z doing the exact same code
}
}

显然有 26 个 if 语句只是为了确定一个属性是否为 null 然后更新该属性并进行数据库调用是在实现中可能非常幼稚。执行此工作单元的更好方法是什么?

最佳答案

谢天谢地C# is able to inspect and assign class members dynamically ,因此一种选择是创建一个 map 列表并对其进行迭代。

    public string DataField(int id, string fieldName)
{
var data = _dataRepository.Find(id);

List<string> props = new List<string>();
props.Add("A");
props.Add("B");
props.Add("C");

if (data != null)
{
Type t = typeof(data).GetType();
foreach (String entry in props) {
PropertyInfo pi = t.GetProperty(entry);
if (pi.GetValue(data) == null) {
pi.SetValue(data, fieldName);
_dataRepository.InsertOrUpdate(data);
return entry;
}
}
}
}

关于algorithm - 如何摆脱重复的 if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7650994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com