標準のクラスにメソッドを追加する
2019年7月22日 (月) 13:31時点におけるRin-scrooge (トーク | 投稿記録)による版 (ページの作成:「標準で準備されているクラスも十分に便利なんだけど…メソッドを追加したいなぁなんて思ったことがあると思うんだ。標準…」)
標準で準備されているクラスも十分に便利なんだけど…メソッドを追加したいなぁなんて思ったことがあると思うんだ。標準のクラスにメソッドを追加する方法があって、それを「拡張メソッド」っていうんだよ。その方法を紹介したいと思うんだ。
クラスの追加
今回はわかりやすくDoubleクラスにメソッドを追加してみようと思うんだ。まずは拡張メソッドを定義するためのクラスを追加するんだよ。クラス名は何でもいいんだ。でも少し修正が必要になるんだよ。拡張メソッドを定義するクラスは「static」じゃないといけないんだ。
public static class DoubleEx
{
}
メソッドの追加
いよいよ、メソッドを追加するよ。今回は2乗した値を返却するメソッドを追加してみるんだ。追加するメソッドも「static」で定義するんだよ。それと、引数がちょっと特殊な感じになるんだ。
public static class DoubleEx
{
public static Double TwoPower(this Double Value)
{
return Value * Value;
}
}
引数の一つ目に「this」を付けて、型と引数を定義するんだ。そうすると、引数(上記の場合は「Value」)にその自身のインスタンスがわたってくるんだよ。今回は2乗して返却したいので、引数(「Value」)を2乗して返却しているんだ。
メソッドの使用
メソッドの定義ができたので使ってみるよ。
private void Button_Click(object sender, RoutedEventArgs e)
{
Double hoge = 3;
MessageBox.Show(hoge.TwoPower().ToString());
}
こんな感じで実行すると…上記の場合はメッセージボックスに「9」って表示されるんだ。
引数を追加したい場合
上記の例だと2乗固定なんだけど…パラメーターで乗数を渡せたら汎用的に利用できるよね。そこで、引数を追加してみようと思うんだ。っていっても、すごく簡単で普通に引数を追加するだけなんだよ。
public static class DoubleEx
{
public static Double Power(this Double Value, Int32 Param)
{
return Math.Pow(Value, Param);
}
}
これで、パラメーターが渡せるんだよ。使うときは、以下のようにしてね。
private void Button_Click(object sender, RoutedEventArgs e)
{
Double hoge = 3;
MessageBox.Show(hoge.Power(3).ToString());
}
これで、3×3×3=27が表示されるんだよ。