Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 方法,该方法需要很多参数_C#_Parameters_Coding Style - Fatal编程技术网

C# 方法,该方法需要很多参数

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)

我对C#中的参数有一个相当普遍的问题

我有时会使用需要大量参数的方法,特别是在使GridView可搜索时

举个例子:

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)并且非常漂亮和干净。根据需要,通过附加属性来扩展它也非常容易。