View Single Post
  #2 (permalink)  
Old November 16th, 2007, 12:07 AM
dparsons dparsons is offline
Wrox Author
Points: 13,255, Level: 49
Points: 13,255, Level: 49 Points: 13,255, Level: 49 Points: 13,255, Level: 49
Activity: 0%
Activity: 0% Activity: 0% Activity: 0%
Join Date: Oct 2005
Location: Ohio, USA
Posts: 4,104
Thanks: 1
Thanked 64 Times in 64 Posts
Send a message via AIM to dparsons

This is one thing that annoys me about Visual Basic, mostly from the angle of a VB.NET programmer trying to move to C#. Anyway.

This may get a bit confusing but try and bear with me.

The shared keyword is most similar to the static keyword in C# essentially what it means is that a method belongs to a class and not an instance of a class. So

...Class definition
Public Shared Sub foo()
'Do something
End Sub

Public Sub fooNew()
'Do something
End Sub
'end class definitnion

So now you have a Shared sub and an instance member sub that you would access like this respectively:

'Shared Member

'Instance Member
Dim c as New MyNewClass()

The static keyword, as your defintion states: A static variable continues to exist for the lifetime of the class or module in which it is defined.

So this is what it means:

Public Sub foo(i as Integer)
    Static newI As Integer
    newI = i
End Sub

and you made a call like this:

your output would be:

And Option Explicit means that the compiler forces you to declare your variables (this is the default in VS), however, if you set Option Explicit Off it is legal to do something like

Public Sub foo()
   Response.Write(VarType(myUndeclaredVariable).ToStr ing())
End Sub

Which will write: object to the screen.

anyway hope that helps.

================================================== =========
Read this if you want to know how to get a correct reply for your question:
================================================== =========
.: Wrox Technical Editor :.
Wrox Books 24 x 7
================================================== =========
Reply With Quote