C#2.0では”匿名メソッド”という新機能が追加されている。
本来デリゲートを指定するところに直接処理内容を書いてしまう手法。
実際に使用する機会があったのでサンプルとして記録しておく。
ソースコード一部抜粋
this.Buffer.Sort(
delegate(RTPData x, RTPData y)
{
int diff = (int)(x.SeqNo - y.SeqNo);
if (diff > JITTER_BUFFER_SIZE) return -1;
if (diff < -JITTER_BUFFER_SIZE) return 1;
return diff;
}
);
ちなみにRTPData
は自作クラスでthis.Buffer
はList
クラス。
Sort
メソッドでRTPData
のメンバであるSeqNo
をもとに昇順ソートするもの。
このソースコードではJITTER_BUFFER_SIZE
との関係によりちょっと特殊な形になっている。
こうすることで簡潔なコードが書けるので、見た目がすっきりする。
コメント