我对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)
还有其他更好的选择吗?
答案 0 :(得分:3)
使用类来表示正在建模的真实世界数据。
class YourNameHere
{
public string EID { get; set; }
...
}
这样,如果你需要添加一个值,你可以修改类 - 其他代码不必更改,你不必依赖于匹配属性的索引等。
您可能需要阅读concept of encapsulation。
答案 1 :(得分:2)
您可以创建一个只包含您想要传递的参数的类,而不是传递10个参数,您最终可能会传递对此对象的引用。如果参数彼此关联,这是有意义的。否则,你可以分两步完成。