View Full Version : تفاوت بین پارامتر های BYVAL , BYREF
soonami
دوشنبه 15 فروردین 1390, 13:46 عصر
سلام
اینو میدونم که BYVAL برای پارامتر های مقدار و BYREF برای ارجاع خواستم در باره این دو پارا متر و کاربر د های آنها توضیحی بدید
###############################################
کاربرد ماژول ؟؟؟؟؟؟؟؟؟؟؟؟؟
شما تو برنامه هاتون از ماژول استفاده میکنید ؟؟؟؟؟؟؟؟
shadi khanum
دوشنبه 15 فروردین 1390, 19:03 عصر
من از ماژول استفاده میکنم ، خیلی هم کارم رو راه میندازه.البته اگه شروع کارتون بهتر از ماژول استفاده نکنید چون راه استاندارد و مبتنی بر Object Oriented نیست و مثلا C# نداره، به جای ماژول از کلاس استاتیک استفاده کنید
shadi khanum
دوشنبه 15 فروردین 1390, 19:06 عصر
فرق byval و Byref هم این که ورودی که از نوع Byval باشه موقع فراخوانی یه کپی از اون متغیر ارسالی واسه تابع یا sub ارسال میشه و اگه تو روتینت تغییر کنه، وقتی تابع یا sub تموم شد، اون تغییر اعمال نشده و فقط در سطح تابع، ولی Byref آدرس اون متغیر برای تابع ارسال میشه ، واسه همین هر تغییری که توی تابع بکنه ، بیرون تابع هم اعمال شده. جفتش کارایی زیادی داره که بسته به تابعی که مینویسی و کاربردش میتونی ازشون استفاده کنی
Creative Force
سه شنبه 12 آذر 1392, 21:39 عصر
ببخشید من درست متوجه نشدم می شه بیشتر توضیح بدید دوستان ؟
من یک مثال ساده درست کردم که تفاوتشونو بدونم ولی هر دوتا انگار عین هم کار می کنند می شه یکی توضیح بده ؟
یک عدد گرفته می شه و تقسیم به 2 می شه همین ! ولی این کد با کدی که بعدش گذاشتم هیچ فرقی نمی کنه بعدی با ByRef هستش ؟
این با ByVal :
Public Class Form1
Private Function d(ByVal c As Integer) As Integer
Return c / 2
c = 0
End Function
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim g As Integer
g = d(Val(TextBox1.Text))
TextBox2.Text = g
End Sub
End Class
اینم با Byref:
Public Class Form1
Private Function d(ByRef c As Integer) As Integer
Return c / 2
c = 0
End Function
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim g As Integer
g = d(Val(TextBox1.Text))
TextBox2.Text = g
End Sub
End Class
Creative Force
چهارشنبه 13 آذر 1392, 18:45 عصر
کسی نیست پاسخ بده ؟ در هر دو صورت جواب یکیه در حالی که نباید این طوری باشه ...
فرید نجفلو
پنج شنبه 14 آذر 1392, 18:12 عصر
سلام
دوست عزیز نوع پارامتر ارسالی و نحوه عملیات رو اون درست نوشته نشده
توجه کنید که کد های بعد از Return اجرا نمیشن
شما به این صورت تست کنید:
Public Class Form1
Private Sub Byref_Test (ByRef c As Integer)
c = 10
End Sub
Private Sub ByVal_Test (ByVal c As Integer)
c = 10
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim g As Integer
g = 5
MsgBox ("sending g as ByVal")
ByVal_Test (g)
MsgBox ("g = " & g)
MsgBox ("sending g as ByRef")
ByRef_Test (g)
MsgBox ("g = " & g)
End Sub
End Class
امیدوارم متوجه شده باشید
Creative Force
پنج شنبه 14 آذر 1392, 19:24 عصر
خیلی ممنون متوجه اشتباهم شدم ...
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.