前から疑問なんだけど、C#にはVBのStaticなローカル変数にあたる機能がないわけだが、
これって何か深い理由があるのんだろうか?

どう考えてもあった方が便利な機能だと思うんだけど。
たとえばDispose実装するとき、VBなら既に一度呼ばれてるかどうかのフラグを
Dispose内に閉じ込められるが、C#だとこんなどうでもいい変数をわざわざ
フィールドにしなきゃならん。