「標準のクラスにメソッドを追加する」の版間の差分
ナビゲーションに移動
検索に移動
Rin-scrooge (トーク | 投稿記録) (ページの作成:「標準で準備されているクラスも十分に便利なんだけど…メソッドを追加したいなぁなんて思ったことがあると思うんだ。標準…」) |
Rin-scrooge (トーク | 投稿記録) |
||
(同じ利用者による、間の3版が非表示) | |||
4行目: | 4行目: | ||
今回はわかりやすくDoubleクラスにメソッドを追加してみようと思うんだ。まずは拡張メソッドを定義するためのクラスを追加するんだよ。クラス名は何でもいいんだ。でも少し修正が必要になるんだよ。拡張メソッドを定義するクラスは「static」じゃないといけないんだ。 | 今回はわかりやすくDoubleクラスにメソッドを追加してみようと思うんだ。まずは拡張メソッドを定義するためのクラスを追加するんだよ。クラス名は何でもいいんだ。でも少し修正が必要になるんだよ。拡張メソッドを定義するクラスは「static」じゃないといけないんだ。 | ||
− | < | + | <syntaxhighlight lang="C#"> |
public static class DoubleEx | public static class DoubleEx | ||
{ | { | ||
} | } | ||
− | </ | + | </syntaxhighlight> |
== メソッドの追加 == | == メソッドの追加 == | ||
いよいよ、メソッドを追加するよ。今回は2乗した値を返却するメソッドを追加してみるんだ。追加するメソッドも「static」で定義するんだよ。それと、引数がちょっと特殊な感じになるんだ。 | いよいよ、メソッドを追加するよ。今回は2乗した値を返却するメソッドを追加してみるんだ。追加するメソッドも「static」で定義するんだよ。それと、引数がちょっと特殊な感じになるんだ。 | ||
− | < | + | <syntaxhighlight lang="C#"> |
public static class DoubleEx | public static class DoubleEx | ||
{ | { | ||
22行目: | 22行目: | ||
} | } | ||
} | } | ||
− | </ | + | </syntaxhighlight> |
引数の一つ目に「this」を付けて、型と引数を定義するんだ。そうすると、引数(上記の場合は「Value」)にその自身のインスタンスがわたってくるんだよ。今回は2乗して返却したいので、引数(「Value」)を2乗して返却しているんだ。 | 引数の一つ目に「this」を付けて、型と引数を定義するんだ。そうすると、引数(上記の場合は「Value」)にその自身のインスタンスがわたってくるんだよ。今回は2乗して返却したいので、引数(「Value」)を2乗して返却しているんだ。 | ||
29行目: | 29行目: | ||
メソッドの定義ができたので使ってみるよ。 | メソッドの定義ができたので使ってみるよ。 | ||
− | < | + | <syntaxhighlight lang="C#"> |
private void Button_Click(object sender, RoutedEventArgs e) | private void Button_Click(object sender, RoutedEventArgs e) | ||
{ | { | ||
35行目: | 35行目: | ||
MessageBox.Show(hoge.TwoPower().ToString()); | MessageBox.Show(hoge.TwoPower().ToString()); | ||
} | } | ||
− | </ | + | </syntaxhighlight> |
こんな感じで実行すると…上記の場合はメッセージボックスに「9」って表示されるんだ。 | こんな感じで実行すると…上記の場合はメッセージボックスに「9」って表示されるんだ。 | ||
42行目: | 42行目: | ||
上記の例だと2乗固定なんだけど…パラメーターで乗数を渡せたら汎用的に利用できるよね。そこで、引数を追加してみようと思うんだ。っていっても、すごく簡単で普通に引数を追加するだけなんだよ。 | 上記の例だと2乗固定なんだけど…パラメーターで乗数を渡せたら汎用的に利用できるよね。そこで、引数を追加してみようと思うんだ。っていっても、すごく簡単で普通に引数を追加するだけなんだよ。 | ||
− | < | + | <syntaxhighlight lang="C#"> |
public static class DoubleEx | public static class DoubleEx | ||
{ | { | ||
50行目: | 50行目: | ||
} | } | ||
} | } | ||
− | </ | + | </syntaxhighlight> |
これで、パラメーターが渡せるんだよ。使うときは、以下のようにしてね。 | これで、パラメーターが渡せるんだよ。使うときは、以下のようにしてね。 | ||
− | < | + | <syntaxhighlight lang="C#"> |
private void Button_Click(object sender, RoutedEventArgs e) | private void Button_Click(object sender, RoutedEventArgs e) | ||
{ | { | ||
59行目: | 59行目: | ||
MessageBox.Show(hoge.Power(3).ToString()); | MessageBox.Show(hoge.Power(3).ToString()); | ||
} | } | ||
− | </ | + | </syntaxhighlight> |
これで、3×3×3=27が表示されるんだよ。 | これで、3×3×3=27が表示されるんだよ。 | ||
2019年7月26日 (金) 16:51時点における最新版
標準で準備されているクラスも十分に便利なんだけど…メソッドを追加したいなぁなんて思ったことがあると思うんだ。標準のクラスにメソッドを追加する方法があって、それを「拡張メソッド」っていうんだよ。その方法を紹介したいと思うんだ。
クラスの追加
今回はわかりやすく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が表示されるんだよ。