標準ライブラリについて
便利な関数群を使おう
.NET Frameworkにはあらかじめ様々なメソッド(関数)が用意されています。
後から追加することなくそのまま使用できる関数群を標準ライブラリといいます。
.NET Frameworkの標準ライブラリは膨大で、すべてを説明することはできません。
ここでは文法と同じくらいのレベルで頻繁に使用されるものをいくつか紹介します。
その前にこのページで基本的な事柄を説明します。
関数とメソッド
C#では関数のことをメソッドと呼びます。
これは後に説明するクラスの機能の一部として提供されているからですが、意味としては関数もメソッドも同じようなものです。
少なくともC#プログラミングでは使い分ける意味はないので、どちらで呼んでも構いません。
静的メソッドとインスタンスメソッド
C#のメソッドには大まかに二種類存在します。
細かい話はクラスの項で行うので、今は簡単に呼び出し方だけを説明しておきます。
静的メソッドは「データ型.メソッド名()」の形式で呼び出すメソッドです。
インスタンスメソッドは「変数名.メソッド名()」の形式で呼び出すメソッドです。
string str = "I have a pen.";
//静的メソッド
string.IsNullOrEmpty(str);
//インスタンスメソッド
str.ToUpper();
静的メソッドは操作対象となるデータ(変数など)を引数に指定します。
インスタンスメソッドは操作対象となるデータは「.」(ドット)の左側に指定します。
同じ機能を提供するメソッドでも静的メソッド版とインスタンスメソッド版の両方がある場合があります。
静的メソッドは静的関数やstaticメソッドとも呼ばれます。
インスタンスメソッドの注意
インスタンスメソッドは変数の中身がnullの状態では呼び出すことができません。
string str = null;
//OK
string.IsNullOrEmpty(str);
//エラー
str.ToUpper();
上の例ではToUpperメソッドの呼び出しの時点でエラー(例外)となります。
静的メソッドはnullを引数に渡しても必ず大丈夫というわけではありませんが(メソッドの実装の仕方による)、インスタンスメソッドは必ず実行に失敗するので注意が必要です。
プロパティ
インスタンスメソッドに似ているものにプロパティというものもあります。
例えばstring型変数の文字数を得るLengthプロパティなどです。
string str = "I have a pen.";
//Lengthプロパティ
int len = str.Length;
プロパティは変数が内部に持っている情報、と考えると良いです。
メソッドとは違いプロパティは引数がなく、丸括弧()も使用しません。
メソッドチェーン
ひとつのデータに対していくつかのメソッドを適用してデータを加工していくことはよくあります。
その場合は当然ですが必要なメソッドを順番に呼び出していきます。
string str = "I have a red pen.";
//Replaceメソッドの実行
string strResult = str.Replace("red ", "");
//ToUpperメソッドの実行
strResult = strResult.ToUpper();
これでも良いのですが、このようなコードは一行にまとめることができます。
string str = "I have a red pen.";
//Replace→ToUpperの順に実行
string strResult = str.Replace("red ", "").ToUpper();
このように書くと、Replaceメソッドの戻り値がそのままToUpperメソッドで使用されます。
このような書き方をメソッドチェーンといいます。
必然的にメソッドチェーンの二番目以降で使用可能なのはインスタンスメソッドとなります。
また、戻り値のないメソッド(void型)の後ろにメソッドチェーンを使用することはできません。
改行OK
メソッドチェーンは一行が長くなりがちなので、途中で改行しても良いです。
string str = "I have a red pen.";
//Trim→Replace→ToUpperの順に実行
string strResult = str.Trim()
.Replace("red ", "")
.ToUpper();
複数行に渡っているように見えますが、末尾に「;」(セミコロン)がないのでC#の文法的には一行とみなされます。