C# 方法,该方法需要很多参数
我对C#中的参数有一个相当普遍的问题 我有时会使用需要大量参数的方法,特别是在使GridView可搜索时 举个例子:C# 方法,该方法需要很多参数,c#,parameters,coding-style,C#,Parameters,Coding Style,我对C#中的参数有一个相当普遍的问题 我有时会使用需要大量参数的方法,特别是在使GridView可搜索时 举个例子: searchSQL( tbEID.Text, tbSID.Text, tbCID.Text, tbSP.Text, tbSA.Text, tbSMF.Text, tbSS.Text, tbSSC.Text, tbSST.Text, tbSIPA.Text, (string)
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)
);
一切都很好,但在我看来不是很好
有什么可能的方法可以让它看起来更好?我能想到的唯一方法是使用列表缩小它,例如:
searchSQL(List<string>, List<DateTime>, int)
searchSQL(列表,列表,int)
还有其他更好的选择吗?使用类来表示正在建模的真实世界数据
class YourNameHere
{
public string EID { get; set; }
...
}
这样,如果您需要添加一个值,您可以修改该类——其他代码不必更改,也不必依赖于匹配的属性的索引,等等
您可能需要阅读。您可以创建一个只包含要传递的参数的类,而不是传递实例10个参数,您可以最终传递对此对象的引用。如果参数彼此关联,这是有意义的。否则,您可以在两个步骤中实现这一点。让一个类包含必要的细节并通过一般的对象进行通信。如果方法需要多于3个参数,则需要考虑重构。将X参数包入一个仅用于传输的<代码>搜索参数< /代码>类,并将所有这些参数作为属性包含。然后您的搜索方法变成
searchSQL(SearchParameters)代码>并且非常漂亮和干净。根据需要,通过附加属性来扩展它也非常容易。