需要很多参数的方法
Method that takes a lot of parameters
我有一个关于 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)
);
一切正常,但 IMO 看起来不太好。
有哪些可能的方法可以使它看起来更好?我能想到的唯一方法是使用列表将其缩小,例如:
searchSQL(List<string>, List<DateTime>, int)
还有其他更好的选择吗?
使用 class 表示正在建模的真实世界数据。
class YourNameHere
{
public string EID { get; set; }
...
}
这样,如果您需要添加一个值,您只需修改 class - 其他代码不必更改,您不必依赖于属性的索引匹配等
您可能想阅读 concept of encapsulation。
您可以创建一个 class,它只包含您要传递的参数,而不是传递例如 10 个参数,您可以最终传递对此对象的引用。如果参数相互关联,这是有道理的。否则,您可以分两步完成。
我有一个关于 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)
);
一切正常,但 IMO 看起来不太好。
有哪些可能的方法可以使它看起来更好?我能想到的唯一方法是使用列表将其缩小,例如:
searchSQL(List<string>, List<DateTime>, int)
还有其他更好的选择吗?
使用 class 表示正在建模的真实世界数据。
class YourNameHere
{
public string EID { get; set; }
...
}
这样,如果您需要添加一个值,您只需修改 class - 其他代码不必更改,您不必依赖于属性的索引匹配等
您可能想阅读 concept of encapsulation。
您可以创建一个 class,它只包含您要传递的参数,而不是传递例如 10 个参数,您可以最终传递对此对象的引用。如果参数相互关联,这是有道理的。否则,您可以分两步完成。