.NET TIPS

メソッドに可変長パラメータを渡すには?

デジタルアドバンテージ
2004/07/09

 ある文字列を指定した文字で分割するには、Stringクラス(System名前空間)のSplitメソッドが使用できるが、このメソッドを呼び出す場面で次のような記述を見かけることがある。

Dim words As String = _
    "this is a list of words, with: a bit of punctuation."
Dim split As String() = _
    words.Split(New Char() {" ", ",", ".", ":"})
VB.NETによるSplitメソッドの呼び出し例
 
string words =
    "this is a list of words, with: a bit of punctuation.";
string [] split = words.Split(new Char [] {' ', ',', '.', ':'});
C#によるSplitメソッドの呼び出し例

 これらの呼び出しでは、文字(Char型の値)の配列を作成し、それをパラメータとしてSplitメソッドに渡している(これにより、「this is a list of words, with: a bit of punctuation.」という文字列を「 」(半角空白)や「,」、「.」、「:」という指定文字列で分割している。)。

 しかし、Splitメソッドは可変長のパラメータを取ることができるメソッドである。リファレンス・マニュアルを参照すると、このメソッドのシグネチャは次のようになっている。

[Visual Basic] Overloads Public Function Split(ParamArray Char()) As String()
[C#] public string[] Split(params char[]);

 ParamArray(VB.NET)あるいはparams(C#)が可変長パラメータを示すキーワードである。メソッドのこのようなパラメータに対しては、わざわざパラメータを配列にしなくても、単にパラメータを列挙してメソッドを呼び出すだけでよい。つまり、冒頭の例のSplitメソッド呼び出しは次のようにシンプルに書き換えることができる。

Dim split As String() = words.Split(" ", ",", ".", ":")
 
string [] split = words.Split(' ', ',', '.', ':');

 実際には、可変長パラメータを取るメソッドの呼び出しは、コンパイラにより配列を使用した呼び出し(冒頭で示した呼び出し方法)に置き換えられる。End of Article

カテゴリ:Visual Basic .NET 処理対象:データ型
カテゴリ:C# 処理対象:データ型
使用ライブラリ:Stringクラス(System名前空間)
 
この記事と関連性の高い別の.NET TIPS
文字列を文字列により分割するには?(VB.NET関数活用)
Stringクラスにより文字列を文字列で分割するには?
文字列で指定したメソッドを呼び出すには?
正規表現を使って文字列を分割するには?[C#/VB]
可変長引数を持つメソッドを作成するには?[C#/VB]
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間