我正在编写一个简单的C#类,它在特定的竞赛中处理SQL查询。大多数查询都是带有3-4参数的SELECT语句,应该正确转义,因此函数如下所示
public DataTable Select(string query, string[] parameters) {
# some code
}parameters是Array还是List<>?在选择这两种类型作为函数参数时是否有最佳做法,还是仅仅是首选项的问题?
因为灵活性,我通常更喜欢List<>,但是在这里,动态创建Array的可能性是一个很好的点。
发布于 2015-04-27 12:41:05
发布于 2015-04-27 12:44:11
根据鲁棒性原理或Postel定律 (强调地雷):
在你所做的事情上要保守,在你从别人那里接受的东西上要自由。
换句话说,使用“最广泛的”类型,即继承层次结构中较高的类型,以便:
在这种情况下:
IEnumerable<T>。ICollection<T>将是最自由的选项。IList<T>。发布于 2015-04-27 12:52:07
在nvoig所说的基础上,我会:
public DataTable Select(string query, params string[] parameters)
{
return Select(query, (IEnumerable<string>)parameters);
}
public DataTable Select(string query, IEnumerable<string> parameters)
{
return null;
}因此,如果您有一个“静态”查询,您可以使用第一个重载(因为您在编译时知道参数的数量),而如果您有一个“动态”查询,则可以在string[]或List<string>或LINQ表达式的结果中使用第二个重载。
https://stackoverflow.com/questions/29896045
复制相似问题