需要大量参数的方法

时间:2015-08-13 12:08:35

标签: c# parameters coding-style

我对C#中的参数有一个非常普遍的问题。

我有时会得到需要大量参数的方法,特别是在使GridViews可搜索时。

举个例子:

searchSQL(
    tbEID.Text, 
    tbSID.Text, 
    tbCID.Text, 
    tbSP.Text, 
    tbSA.Text, 
    tbSMF.Text, 
    tbSS.Text, 
    tbSSC.Text, 
    tbSST.Text, 
    tbSIPA.Text, 
    (string)ViewState["SortExpression"], 
    (string)ViewState["SortDirection"], 
    (tbFromDate.Text == "") ? (DateTime?)null : Convert.ToDateTime(tbFromDate.Text), 
    (tbToDate.Text == "") ? (DateTime?)null : Convert.ToDateTime(tbToDate.Text), 
    (tbSAC.Text == "") ? (int?)null : Convert.ToInt32(tbSAC.Text)
);

它的作用和一切,但IMO看起来并不是很好。

有什么方法可以让它看起来更好看?我能想到的唯一方法是使用列表缩小它,例如:

searchSQL(List<string>, List<DateTime>, int)

还有其他更好的选择吗?

2 个答案:

答案 0 :(得分:3)

使用类来表示正在建模的真实世界数据。

class YourNameHere
{
    public string EID { get; set; }
    ...
}

这样,如果你需要添加一个值,你可以修改类 - 其他代码不必更改,你不必依赖于匹配属性的索引等。

您可能需要阅读concept of encapsulation

答案 1 :(得分:2)

您可以创建一个只包含您想要传递的参数的类,而不是传递10个参数,您最终可能会传递对此对象的引用。如果参数彼此关联,这是有意义的。否则,你可以分两步完成。