どーいうことだってばよ?
public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source,Func<TSource, int, TResult> selector)のsourceの要素数が、Int32.MaxValue超えたらどーなるのか気になったので試してみた。
試してみたこと
以下のようなモノをこさえて、後はひたすら回すべしw
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication2
{
	class Program
	{
		static IEnumerable<long> CreateSequence()
		{
			for (long i = 0; i <= 2147483648; i++) yield return i;
		}
		static void Main(string[] args)
		{
			try
			{
				foreach (var elem in CreateSequence().Select((l, i) => new KeyValuePair<int, long>(i, l)))
				{
					if (elem.Value%1000000 == 0)
					{
						Console.WriteLine((elem.Value/2147483648.0*100).ToString("F2") + "%");
					}
				}
			}
			catch (OverflowException)
			{
				Console.WriteLine("Overflow detected!");
			}
			Console.WriteLine("Press enter to exit.");
			Console.ReadLine();
		}
	}
}
こいつを、 /checked-でコンパイルしてOverFlowExceptionが飛んでくるかどうか試してみた。
結果とまとめ
飛んできた。
当該部分のコードリーディングしたところ、インデックスとして、selectorデリゲートに渡される変数のインクリメント部分が、明示的にcheckedブロックで括られていたのでまぁそりゃそうなるよね。
Int32.MaxValue超えるなんてそうそう無いとは思うけど、これも後学の為ということで一つ。