PDA

View Full Version : سوال: byval byref



aminvb
یک شنبه 03 مرداد 1389, 01:14 صبح
سلام

چرا توو بیشتر تعریفا Function از byval استفاده میشه نه byref ؟
byref پارامتر اجرایه من میخوام به تابع ورودی بدم که خروجی هایی رو بهم بده
اگه byref باشه تغییراته متغییر های توابع انجام میشه اما به برنامه اصلی بر نمی گرده
تغییری توو برنامه اصلی نداره

لطفا راهنمایی فرمایید


تشکر .

ebrahimv
یک شنبه 03 مرداد 1389, 02:16 صبح
Dim s As Integer = 1
Private Sub ss(ByVal a As Integer)
a += 1
End Sub

در بلا مقدار s=1 خواهد بود.



Dim s As Integer = 1
Private Sub ss(ByRef a As Integer)
a += 1
End Sub

در اين حالت مقدار s=2 خواهد بود.

hero4000
یک شنبه 03 مرداد 1389, 08:14 صبح
دوست عزيز اين S شما کجا داره تغيير ميکنه :متفکر: :کف:

ebrahimv
یک شنبه 03 مرداد 1389, 11:01 صبح
دوست عزيز اين S شما کجا داره تغيير ميکنه :متفکر: :کف:
ميتوني امتحان كني
و اينا از مقدمات هستن

hero4000
یک شنبه 03 مرداد 1389, 11:57 صبح
دوست عزيز درسته که بنده چيزي از برنامه نويسي نميدونم ولي اينقدر ميفهمم که شما بايد يک متغير رو يکجوري مقدار دهي بکني تا تغيير کنه

وقتي شما بر روي متغير S هيچ تغييري نميدي و حتي به پروسيجر هم نميفرستي چرا بايد تغيير کنه

لطفا کدتون رو مجدد بازنگري بفرمائيد

ebrahimv
یک شنبه 03 مرداد 1389, 12:52 عصر
دوست عزيز درسته که بنده چيزي از برنامه نويسي نميدونم ولي اينقدر ميفهمم که شما بايد يک متغير رو يکجوري مقدار دهي بکني تا تغيير کنه

وقتي شما بر روي متغير S هيچ تغييري نميدي و حتي به پروسيجر هم نميفرستي چرا بايد تغيير کنه

لطفا کدتون رو مجدد بازنگري بفرمائيد
حرف شما درست ولي درسته فقط فراخواني تابع مونده
براي Byref


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim s As Integer = 1
ByrefTest(s)
MsgBox(s)
End Sub
Private Sub ByrefTest(ByRef a As Integer)
a += 1
End Sub