View Full Version : مشكل با توابع Shared
salehbagheri
یک شنبه 27 بهمن 1387, 14:24 عصر
سلام دوستان!
مشكل من اينكه نميتونم در توابع Shared از ديگر توابع تعريف شده استفاده كنم!
اين مشكل چه جوري رفع ميشه!
با تشكر
Mehdi Asgari
یک شنبه 27 بهمن 1387, 16:00 عصر
اگه منظورت فراخوانی توابع Non-Shared هست :
ببین توابعی که Sahred (یا static در دیگر زبان ها) هستن متعلق به کل کلاسن ، نه یک شی خاص. یعنی اگه مثلا یه فیلد Shared داشته باشی و مقدارش رو عوض کنی ، تمام اشیای کلاست اون تغییر رو می بینن
اما توابع (یا فیلد هایی) که Shared نیستن ، متعلق به یک شی هستن ، نه کل کلاس
یعنی اگه مقدار یک فیلد رو عوض کنی ، فقط فیلد اون شی تغییر می کنه (هر شی یک نسخه از اون فیلد مخصوص خودش داره)
حالا در مورد توابع: باید بگی تابع مربوط به کدوم شی رو میخوای فراخوانی کنی
مثال:
Module Module1
Sub Main()
ASimpleClass.F() 'OK
ASimpleClass.G() 'Error, G is not shared
Dim a As New ASimpleClass()
a.G() 'OK
End Sub
End Module
Class ASimpleClass
Public Shared Sub F()
Console.WriteLine("Hi. in ASimpleClass::F")
G() 'Error, needs an instance of class
End Sub
Public Sub G()
Console.WriteLine("Hi. in ASimpleClass::G")
F() 'OK
End Sub
End Class
قانون: می تونی از داخل توابع Shared ، فقط توابع Shared رو فراخوانی کنی. اما از داخل توابع غیر Shared میتونی توابع Shared رو هم (علاوه بر توابع غیر Shared) فراخوانی کنی
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.