我可以将这两个 C# 函数合并为一个吗?
本文关键字:一个 合并 两个 我可以 函数 | 更新日期: 2023-09-27 18:35:53
>我有以下内容:
protected SelectList GetReferenceOptions(string pk)
{
var options = new SelectList(_reference.Get(pk)
.AsEnumerable()
.OrderBy(o => o.Order), "RowKey", "Value");
return options;
}
protected SelectList GetReferenceOptions(string pk, string value)
{
var options = new SelectList(_reference.Get(pk)
.AsEnumerable()
.OrderBy(o => o.Order), "RowKey", "Value", value);
return options;
}
这看起来像我可以组合成一个的东西,但我不确定如何处理参数。有人可以通过解释我如何做到这一点来帮助我吗?
如果在您显示的第一个构造函数中将值设置为 null,那么这将起作用:
protected SelectList GetReferenceOptions(string pk, string value = null)
{
var options = new SelectList(_reference.Get(pk)
.AsEnumerable()
.OrderBy(o => o.Order), "RowKey", "Value", value);
return options;
}
您可以引入默认参数,例如:
protected SelectList GetReferenceOptions(string pk, string value=null)
{
var options =
value==null
? new SelectList(_reference.Get(pk)
.AsEnumerable()
.OrderBy(o => o.Order), "RowKey", "Value")
: new SelectList(_reference.Get(pk)
.AsEnumerable()
.OrderBy(o => o.Order), "RowKey", "Value", value);
return options;
}
然后通过检查默认参数将两个函数合并为一个 null
.
您应该保留这两个方法并 DRY 它们。那更糟糕的是。可能:
protected SelectList GetReferenceOptions(string pk)
{
return GetReferenceOptions(pk, null);
}
protected SelectList GetReferenceOptions(string pk, string value)
{
return new SelectList(_reference.Get(pk).OrderBy(o => o.Order),
"RowKey", "Value", value);
}