ב-VB יש שני סוגי משתנים: משתנים "אמיתיים", והפניות לאובייקטים.משתנים מטיפוסים פרימיטיביים, כלומר Intgere, String, Double וכו'
נשמרים כ"משתנים אמיתיים", ואין לך שום דרך מובנית בשפה ליצור
מצביעים אליהם.
אתה יכול עם זאת להעביר אותם לפונקציה ByRef במקום ByVal, מה שאומר
שהפונקציה תקבל הפניה אל המשתנים במקום עותק חדש שלהם - וכל שינוי
במשתנים בתוך הפונקציה יראה גם מחוץ לה.
גם טיפוסים מוגדרים אישית(UDTs, מה שמוגדר בעזרת בלוק Type) נשמרים
באופן זה.
משתנים מטיפוסים כמו Collection שהוזכר למעלה, משתנים מסוג של
מחלקות שיצרת, משתנים מטיפוסים שהינם ממשקים של רכיבי ActiveX,
ומשתנים מטיפוסים של פקדים(בין אם מדובר בפקדים המובנים של VB
או פקדי ActiveX) נשמרים בתור __הפניות__ לאובייקטים.
משמעות הדבר היא שקוד כזה:
Dim oMyObject as CMyClass Dim oMyOtherObject as CMyClassSet oMyObject = New CMyClass oMyOtherObject = oMyObject oMyObject.iMyIntProperty = 1234 MSgBox oMyOtherObject.iMyIntProperty |
יציג על המסך 1234, כי שני המשתנים: oMyObject ו-oMyOtherObject הינם
הפניות לאותו אובייקט.