PDA

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) فراخوانی کنی