VB.NET & C# -Static keyword proper usage?
===

My question is in regards to the <code>static</code> keyword.

Up to this point, via my own research, i have a general idea of what the <code>static</code> keyword is but I feel that all these different descriptions and details have only confused me more. At the moment, I really don't feel that i know how to properly use "<code>static</code>"; it seems to be used differently between C# and VB.NET and applies differently within the language depending on what you are using it for…

**While reading this MSDN Article:**
[http://msdn.microsoft.com/en-us/library/z2cty7t8(v=vs.80).aspx][1]

Many questions arise, specifically when I read this sentence:
"Normally, a local variable in a procedure ceases to exist as soon as the procedure terminates. A <code>static</code> variable remains in existence and retains its most recent value."

My questions:

1) Is VB.NET version of <code>static</code> the same as C# or JAVA, is the concept the same for most languages?

2) If <code>static</code> retain value within a class, and we are able to access that certain member, function without instantiating the class – Is this safe to use loosely? In other words, should we keep a close eye when using <code>static</code>’s within classes? They remind me of global variables for some reason, maybe I’m just being ignorant here and simply need more practice to understand their purpose.

3) What are good scenarios where using <code>static</code> benefits and promotes reusability of code?


Thank you for any help on this!
Dayan D.


  [1]: http://msdn.microsoft.com/en-us/library/z2cty7t8%28v=vs.80%29.aspx
