>>210
本来使えないはずの GetEnumerator() を、where で指定することで使用できるようにしているので、インターフェース側のメソッドのシグニチャで、コンパイル時に型が決定するということですね。

では、インターフェース側で setter を持つメソッドが定義されていて、それを同様にして使用した場合、ボックス化されてしまうのでしょうか。