2012年01月22日

n回処理を繰り返したい (2)

   このエントリーをはてなブックマークに追加 Clip to Evernote
前回「n回処理を繰り返したい (1)」の続きです。

こういった繰り返し処理の時には、何回目の処理かを知りたい場合があります。
そんな時のために、もう一つ拡張メソッドを用意しましょう。


こすれば、次のようなコードが可能になります。


参考に、for文使ったコードも示します。


  

Posted by gushwell at 21:34Comments(0)TrackBack(0)

2012年01月19日

n回処理を繰り返したい (1)

   このエントリーをはてなブックマークに追加 Clip to Evernote
C#で、n回処理を繰り返したときには、for文を使うのが一般的です。

例えば、こんな感じ。


しかし、いちいちfor文を書くのも面倒です。
n回繰り返しをもっと直感的に書けるように書いた拡張メソッドです。


このようなクラスを定義してしまえば、


と書く事ができます。
また、次のような記述も可能となります。


nの値を表示すれば、10が表示されます。
  
Posted by gushwell at 22:08Comments(0)TrackBack(0)

2012年01月12日

リストのすべての要素に対しラムダ式を適用する

   このエントリーをはてなブックマークに追加 Clip to Evernote
リストをデリゲートが返す値で埋め尽くす では、リストをデリゲート(ラムダ式)の値で初期化する拡張メソッドを
示しましたが、今度は、既にリスト内にセットされている値に対し、ラムダ式を適用し、
新たな値をセットする拡張メソッドを示します。


この拡張メソッドを利用したコードです。

ここでは、各要素を1.05倍しています。
105 210 315 420
がリストの新たな要素となります。

この例では、ラムダ式の第1引数を利用していませんが、この i には、
その要素のインデックス番号がわたるので、そのインデックス値を使って、
要素の値に対し、処理をすることもできます。

ジェネリックなメソッドにしているので、リストの要素が文字列であってもOKです。
まったく、意味のないコードですが、以下にその例を示します。


リストには、順に

 "SILVERLIGHT"
 "INDOWS"
 "OX"
 "ROSOFT"

が格納されます。
  
Posted by gushwell at 22:00Comments(0)TrackBack(0)

2012年01月10日

リストをデリゲートが返す値で埋め尽くす

   このエントリーをはてなブックマークに追加 Clip to Evernote
以前アップした「リストを指定した値で埋め尽くす」をちょっと工夫すれば、さらに汎用性の高い拡張メソッドが作れます。


こんな風に使います。


これで、0 2 4 6 8 10 12 14 16 18 と要素がセットされます。

  
Posted by gushwell at 20:58Comments(2)TrackBack(0)

2011年12月08日

リストを指定した値で埋め尽くす

   このエントリーをはてなブックマークに追加 Clip to Evernote
タイトルの通りです。
リストを指定した値で埋め尽くす拡張メソッドを書いてみました。


以下のように使えます。


引数countの無いバージョンを書けば、確保されている要素数すべてを
同じ値で埋め尽くすメソッドも作れますね。
  
Posted by gushwell at 23:30Comments(0)TrackBack(0)

2011年11月29日

ToNullable拡張メソッド

   このエントリーをはてなブックマークに追加 Clip to Evernote
var を使いたいための、拡張メソッド。


これを使えば、

int? n = 10;

ではなくて、

var n = 10.ToNullable();

と書けます。

まあ、あくまでもお遊びです。
  
Posted by gushwell at 22:30Comments(0)TrackBack(0)

2011年11月23日

文字列の配列を指定区切り文字で連結する

   このエントリーをはてなブックマークに追加 Clip to Evernote
以下のような拡張メソッドを定義しておきます。たんにJoinを呼び出しているだけのものです。


文字列の配列に格納されている文字列を、区切り記号を使い連結する拡張メソッドです。
単にJoinメソッドを呼び出しているだけのメソッドですが、インテリセンスの力が働き、
とても使いやすいメソッドに変身します。

このメソッドを使えば、以下のようなコードを書くことができます。


この実行結果は、以下のように表示されます。

123-456-789-abc-def

なお、メソッド名を Joinにしなかったのは、LINQのJoinメソッドと
混同しないようにするためです。

ところで、String.Joinって、.NET Framework4になって、オーバーロードされているメソッドの数が
増えたんですね。

Join(String, IEnumerable<String>)
とか
Join<T>(String, IEnumerable<T>)
とか。

なので、上の拡張メソッドは、以下のように書く事でさらに、汎用性が あがりますね。

このブログにC#のコードを載せたのは、実に、3ヶ月ぶりです。
  
Posted by gushwell at 16:47Comments(0)TrackBack(0)