PDA

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 عصر
خیلی ممنون متوجه اشتباهم شدم ...