Files do not matter in C#, visibility and scope do; the scope of name spaces and types define the scope; access modifiers define access to the types/members from different scope.
Now, there is no a concept of "global" variables. The whole idea of global is not good. Using static members can be acceptable in simple projects, but they are hard to maintain correctly in big and complex project.
The really robust concept is the singleton pattern, see
http://en.wikipedia.org/wiki/Singleton_pattern[
^].
A good sample of singleton implementation for C# is shown here:
http://csharpindepth.com/Articles/General/Singleton.aspx[
^].
—SA