什么时候使用params作为方法参数的真实例子?



根据我的理解,params只是语法糖,"在底层"只是简单地为您提供指定类型的数组。

首先,什么时候使用这个?

第二,为什么要使用它而不是仅仅声明一个数组参数?

Math.Min接受两个参数。这是一个愚蠢的限制。许多其他语言允许这样写:

double x, y, z, w;
double least = min(x, y, z, w);

如果你想写一个可以这样使用的min函数,你会想用params

可以在String.Format()这样的方法中找到一个明显的例子。使用参数的语句很容易理解:

string.Format("Your name is {0}, {1}", lastName, firstName);

但是如果没有参数,这就有点困难了:

string.Format("Your name is {0}, {1}", new string[] { lastName, firstName });

我发现自己使用参数很多字符串函数像这样。我使用它只是为了提高代码的可读性

我使用它的一种方式是将sql查询传递给包装器类。我将使用一些sql,其中包含可变数量的参数。这样我就可以列出我发送的所有参数,而不是先创建一个数组。

    SQLWrapper.Query(" some sql with parameters", new SqlParameter("@param1", val1),
                                                  new SqlParameter("@param1", val1),
                                                  new SqlParameter("@param1", val1));

好得多

SQLWr

apper.Query(" some sql with parameters", new SqlParameter[]{new SqlParameter("@param1", val1),
                                                      new SqlParameter("@param1", val1),
                                                      new SqlParameter("@param1", val1)});

当你遇到需要可变数量参数的情况时,它是很好的

基类库中的一个示例是String.Split(params char[] separator),允许您编写,例如:

var segs = myString.Split(',',';',' ');

而不是

var sets = myString.Split(new char[] {',', ';', ' '});

我发现自己使用参数的主要原因是在执行存储过程时。

假设一个数据库中有几百个存储过程。那么你真的只有两个选择

1:为每个存储过程单独编写代码,这将花费数月时间

2:创建一个通用的执行器方法,该方法可以运行任何存储过程并接受任意编号&参数类型,例如

databaseHelper.ExecuteStoredProcedure(
                "myStoredProecdure",
                DbProviderHelper.StringParameter("@parameter_string", somestring),
                DbProviderHelper.BoolParameter("@parameter_string", somebool),
                DbProviderHelper.IntParameter("@parameter_int", someint));   

相关内容

  • 没有找到相关文章

最新更新