If you don't make the functions shared then you have to instantiate the object. Although the object would have no data, it still takes time and memory to instantiate the object.
In reality it is only a few bytes and a small handful of CPU cycles for each pointless instantiation, but what it really does is make a mess of your code.
[Vb]
Public Class IsShared
Public Shared Sub DoThings()
End Sub
End Class
Public Class NotShared
Public Sub DoThings()
End Sub
End Class
Public Class Example
Public Sub Demonstrate
'With the shared class we can directly call the sub
IsShared.DoThings()
'With the not shared class, we have to write pointless code
'to instantiate an object. It takes twelve pointless bytes of RAM
'(I believe) and time to allocate memory for these pointless bytes,
'and adds extra data to the stack for each function call, but the
'biggest problem is the extra code:
Dim thing As New NotShared '<-- Right there
thing.DoThings()
End Sub
End Class
[/CODE]
Either way, it isn't a big deal, but using instance functions where they really have nothing to do with an instance of an object just doesn't make sense.