PDA

View Full Version : OverLoad Function



Business Analyst
پنج شنبه 19 مهر 1386, 06:44 صبح
public class class1
public overloads function add (byval x as integer,byval y as integer) as integer
return x+y
end sub
public overloads function add (byval x as double,byval y as double) as double
return x+y
end sub
end class
'in form
dim fr as new class1
dim a as object=fr.add(textbox1.text,textbox2.tex)
اروورش اینه!
cant convert string to double or integer
میشه بگید چیکار کنم؟

amirsajjadi
پنج شنبه 19 مهر 1386, 13:02 عصر
شما باید با استفاده از توابع Cdbl (تبدیل اعداد به نوع Double) و تابع CInt (تبدیل اعداد به نوع Integer) پارامترها رو مقدار بدید به این صورت :


dim a as object=fr.add(cint(textbox1.text),cint(textbox2.te xt))
و
dim a as object=fr.add(cdbl(textbox1.text),cdbl(textbox2.te xt))

Business Analyst
پنج شنبه 19 مهر 1386, 13:20 عصر
اینو فکر کنم هممون بدونیم!
دوست من اگه من کانورتش کنم پس دیگه چه لزومی به نوشتن تابع اور لود داره!؟
ما نمیدونیم یوزر میخواد توی تکس باکس چی بذاره پس نمیتونیم تبدیلش کنیم و محاسبه رو باید به OverLoad Function بسپزیم!
ممنون
اگه دوستان میدونن چطود میشه این کارو کرد مارو شرمنده کنند

amirsajjadi
پنج شنبه 19 مهر 1386, 14:00 عصر
سلام
دوست من ، پارامترهایی که به توابع میفرستی از نوع رشته ایه بنابراین دات نت پیغام خطا (نمیتواند نوع رشته ای رو به نوع Integer و Double تبدیل کند) میده
در ضمن Overloads درسته نه Overload

Business Analyst
پنج شنبه 19 مهر 1386, 14:30 عصر
البته بماند دوسته من که نام کلمه کلیدی overLoads و به این عمل میگن overload البته من کمی بیسوادم!
ازتون راه خاستم نه این که بگین نمیشه! چون میشه ولی من نمیدونم!

amirsajjadi
پنج شنبه 19 مهر 1386, 22:52 عصر
ببینید مشکل شما توی ورود اطلاعات یوزر یعنی میخواین بفهمید که یوزر چی وارد کرده یا توی توابع مشکل دارید
اگه توی توابع که نیازی نیست بفهمید که یوزر چی وارد کرده یعنی با دستور Val یا اون دستورات قبلی که گفتم میتونید اطلاعات یوزر رو تبدیل کنید
ولی اگه میخوای بفهمی که یوزر چه نوع اطلاعاتی وارد کرده شاید این تابع بدردت بخوره

PrivateFunction VarType(ByVal Data AsObject) As VariantType
SelectCase Data
Case Data <= Integer.MaxValue
VarType = VariantType.Integer
Case Data <= Double.MaxValue
VarType = VariantType.Double
EndSelect
EndFunction

Business Analyst
شنبه 21 مهر 1386, 18:49 عصر
راستش نمیدونم مسله این که بنده نمیتونم منظورم رو درست بیان کنم!
دوست من وظیفه تشخیص این که کدوم از چه نوع datataype هست باید تابع اوورلود انجام بده!
پس اگه ما دیتا تایپ رو تبدیل کنیم یا با روش دوم ک عمل کنیم این کار تشخیص را ما انجام دادیم!
البته راه حل دوم به نظره بنده اشتباه هست چون int زیر شاخه double هست!
ممنون

ghafoori
شنبه 21 مهر 1386, 20:59 عصر
دوست عزیز من که نفهمیدم هدف شما از این کار چیست ولی به این کد نگاهی بیاندازید ببینید بدرد می خورد

If TextBox1.Text.Contains(".") Then
Dim a As Object = add(Convert.ToDouble(TextBox1.Text), Convert.ToDouble(TextBox2.Text))
Else
Dim a As Object = add(Int(TextBox1.Text), Int(TextBox2.Text))
End If

eyes_shut_number1
شنبه 21 مهر 1386, 21:26 عصر
راستش داشتم یه جا درس میدادم! اومدم از overload function/sub یه مثال بزنم که اینطوری شد!میخواستم نحوه کار بارگذاری اضافه رو با یه مثال ساده که توی تئوری سادس بزنم که...
در هر صورت این راه ها کمکم نمیکنه چون یه جوری داره دستی خودمون این کارو میکنیم نه این که تابع تشخیص بده و اوورلود کنه.
کلا دستی نباید این کار انجام بشه!
بازم ممنون افای غفوری