ubyte[10][10] map;
foreach (int y, ubyte[10] m; map) {
  foreach (int x, ubyte id; m) {
  }
}

for (int y = 0; y < map.length; y++) {
  for (int x = 0; x < map[y].length; x++) {
  }
}

で、同じようで違う部分ではまって死んだり。二段目の foreach の m はコピーというのは分かっていたんだけど…。いつもCで書いていた下の for ループと同じ感覚で map の中弄って判定してた。id:ABA:20040305#p3 を見てからこのことについては注意していたつもりだったんだけど on_