Paramsをメソッド引数として使用するタイミングの実際の例は何ですか?

StackOverflow https://stackoverflow.com/questions/5822719

  •  26-10-2019
  •  | 
  •  

質問

私が理解しているように、 params 「フードの下」が指定したタイプの配列を単に提供する単なる構文砂糖です。

まず、これをいつ使用しますか?

第二に、配列引数を宣言するだけでなく、なぜそれを使用するのですか?

役に立ちましたか?

解決

Math.Min ちょうど2つの引数を取ります。これは愚かな制限です。他の多くの言語では、次のように書くことができます。

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

あなたが書きたいなら min そのように使用できる機能、使用したい params.

他のヒント

明らかな例は、 String.Format(). 。 PARAMSを使用したこのステートメントは、簡単に従うことができます。

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

しかし、パラメージがなければもう少し難しいです:

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

私は、このような文字列関数にパラマをたくさん使っていることに気づきます。コードの読みやすさを向上させるためだけに使用します。

私がそれを使用した1つの方法は、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[] {',', ';', ' '});

私がパラメージを使用していることに気付く主な非プレティエ /理解しやすい理由は、ストアドプロシージャを実行することです。

データベースに数百のストアドプロシージャがあるケースをご覧ください。その後、本当に2つの選択肢しかありません

1:数か月かかる各ストアドプロシージャのコードを個別に書き込む

2:任意のストアドプロシージャを実行し、任意の数字とタイプのパラメーターを実行する一般的なエグゼキューターメソッドを作成します。

databaseHelper.ExecuteStoredProcedure(
                "myStoredProecdure",
                DbProviderHelper.StringParameter("@parameter_string", somestring),
                DbProviderHelper.BoolParameter("@parameter_string", somebool),
                DbProviderHelper.IntParameter("@parameter_int", someint));   
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top