トップ «前の日記(2012-08-28) 最新 次の日記(2012-09-02)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2012-08-29

_ C#でeach_with_index

Rubyにはeach_with_indexというメソッドがあって、これを使うとオブジェクトの列挙とインデックスが同時に取れる。

[:a, :b, :c].each_with_index do |v, i|
  p "#{i}:#{v}"   #=> "0:a", "1:b", "2:c"
end

C#で同じことができるとforはほとんど不要になる。

var a = new char[]{ 'a', 'b', 'c' };
/* 本当は次のように書きたいが、インデックスが欲しいので
foreach (var x in a) 
{
    Console.WriteLine(x);  
}
 for を使うことになる? */
for (var i = 0; i < a.Length; i++) 
{
    Console.WriteLine(i + ":" + x);  
}

LINQを使うとインデックスを得られる。

foreach (var x in a.Select((v, i)=>new {Index = i, Value = v}))
{
    Console.WriteLine(x.Index + ":" + x.Value);
}

これは良い。forは無限ループのfor (;;) だけでしか使わなくて済む。

で、ここで良くわからないのは、同じことを、from構文ではどう書けば良いのかわからない。

(from x in a select ???? new { Index = i, Value = v }) // どう書くんだ?

QA@ITに投げれば良いのか、と書いてから気づいたりして。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|

ジェズイットを見習え