[AccessD] First real stumble with using VB.Net over VB

Shamil Salakhetdinov shamil at smsconsulting.spb.ru
Fri Apr 15 14:54:31 CDT 2011


Hi John --

<<<
Call both whatever you want, just please do not attempt
to tell me that they are the same thing, they clearly are not
>>>
But they are the same from *technical* (VBA/VB6/COM) point of view - that is
what Drew is telling...
IOW: they are looking the same for outer world.
Drew doesn't care about their internal implementation or high level
concepts...
Nobody argues here when one or another coding style/approach should be used
or that one is better than another one because of ...

OA: They are the same from *technical* point of view/perspective of
VBA/VB6/COM.

Try the following VBA/VB6 code:

-------------   cut here -----
' class MyClass
Public MyTestVar As String

Private m_myTestVar2 As String
Property Get MyTestVar2() As String
    MyTestVar2 = m_myTestVar2
End Property
Property Let MyTestVar2(ByVal v As String)
    m_myTestVar2 = v
End Property

-------------   cut here -----

' standard module - MyTestModule

Public Sub MyTest()

Dim c As MyClass
Set c = New MyClass

Dim result As String
CallByName c, "MyTestVar", VbLet, "MyTestValue"
result = CallByName(c, "MyTestVar", VbGet)
 
Debug.Print "Result from public variable = " + result

CallByName c, "MyTestVar2", VbLet, "MyTestValue2"
result = CallByName(c, "MyTestVar2", VbGet)
 
Debug.Print "Result from public variable2 = " + result

End Sub

-------------   cut here -----


Thank you.

--
Shamil
 
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of jwcolby
Sent: 15 ?????? 2011 ?. 23:26
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] First real stumble with using VB.Net over VB

So what you are saying (and I have no reason to disbelieve this) is that a
public variable is a private variable wrapped in an invisible property call.

If that is truly the case (and they are identical) then why does he see
value / property differences?

And everything that I said below stands.  A variable (field when placed in a
class) is a structure on the heap (apparently then wrapped in something to
return the value to make it public), whereas a property is a keyword and a
real function which can contain other stuff and does not contain any storage
of it's own.  I defy you to show me a variable running code to wipe your
disk, but I can do so with a property.

They are *not* the same thing.  The fact that a public class variable "kinda
sorta" emulates a private variable with a property wrapper does not make it
a private variable with a real property returning the value.

I truly don't give a rat's patuty if you or Drew wants to call a public
variable a property. 
Apparently Drew desperately wants to do so - reason unknown.  As I am not a
VB6 person I have no vested interest either way, I am just pointing out the
quite obvious problem with trying to apply the same name to two objects that
perform quite differently and have quite different capabilities. 
I use properties and I often times have code in them which performs
calculations or tests.  I have never managed to do that with a variable of
any kind.  I have had properties which did not wrap a variable at all.

A property (keyword / function) does not have any specific storage assigned
to it unless you do so, intentionally, with more code.  A variable ALWAYS
has storage assigned on the stack / heap.

Call both whatever you want, just please do not attempt to tell me that they
are the same thing, they clearly are not.

I will continue to call variables in a class a field and I will continue to
call properties (keyword / function) a property.  Everybody except Drew will
understand me.

John W. Colby
www.ColbyConsulting.com





More information about the AccessD mailing list