PDA

View Full Version : ارسال زیربرنامه بعنوان پارامتر



visual_sadegh
یک شنبه 01 اردیبهشت 1387, 10:16 صبح
سلام دوستان
آیا امکان داره که یک زیربرنامه یا تابع رو به عنوان

پارامتر به یک تابع یا زیر برنامه داد.
یا اینکه به عنوان پروپرتی به یک شی اختصاص داد.
ممنون

amirsajjadi
یک شنبه 01 اردیبهشت 1387, 13:20 عصر
منظورتون رو درست متوجه نشدم ؟!

visual_sadegh
یک شنبه 01 اردیبهشت 1387, 13:33 عصر
آیا می شه یک پروپرتی در یک کلاس ساخت که نوعش تابع یا زیر برنامه باشه؟
آیا می شه یک تابع یا زیر برنامه ساخت که پارامترش یک تابع باشه؟
توی وی بی 6 با Address of می شد یه کارایی کرد

sh
یک شنبه 01 اردیبهشت 1387, 17:22 عصر
اگر منظورت اینه که با فراخوانی بک تابع خودبخود تابع دیگیری فراخوانی شود

مثال




Sub TestEvents()
Dim Obj As New Class1
' Associate an event handler with an event.
AddHandler Obj.Ev_Event, AddressOf EventHandler
' Call the method to raise the event.
Obj.CauseSomeEvent()
' Stop handling events.
RemoveHandler Obj.Ev_Event, AddressOf EventHandler
' This event will not be handled.
Obj.CauseSomeEvent()
End Sub
Sub EventHandler()
' Handle the event.
MsgBox("EventHandler caught event.")
End Sub
Public Class Class1
' Declare an event.
Public Event Ev_Event()
Sub CauseSomeEvent()
' Raise an event.
RaiseEvent Ev_Event()
End Sub
End Class

رضا عربلو
یک شنبه 01 اردیبهشت 1387, 17:47 عصر
برای ایتکار شنا بایستی از اینتر فیس استفاده کنید، که نتیجه چیزی شبیه به همون Event Handling ما می شود.


Interface IDo
{
public void DoSomThing();
}

public Class Class1:IDo
{
public void DoSomThing()
{
...
}

Public Class Class2
{
public void OtherMethod(IDo)
{
IDo.DoSomeThing();
}
}
}


و نحوه استفاده از آن


Class1 c1 = new Class1();
Class2 c2 = new Class2();
c2.OtherMethod(c1 as IDo);

visual_sadegh
دوشنبه 02 اردیبهشت 1387, 08:47 صبح
ممنون از توجه شما
ولی منظور واقعی من اینه:

Function Sum(A as integer,B as integer) As Integer
Return A+B
End Sub

Sub Test(A as زیربرنامه)
Call A(10,11)
End sub

sh
دوشنبه 02 اردیبهشت 1387, 14:37 عصر
الان تابع SUM چه ارتباطی با روال Test داره ؟

اصلا متوجه نشدم چی میخوای کاری رو که میخوای انجام بدی شرح بده تا راه حل درستش رو پیدا کنی

رضا عربلو
دوشنبه 02 اردیبهشت 1387, 17:30 عصر
اون کدی که من نوشتم دقیقاً همین کار را می کند، عمیق تر به آن نگاه کن.

visual_sadegh
سه شنبه 03 اردیبهشت 1387, 07:11 صبح
اون کدی که من نوشتم دقیقاً همین کار را می کند، عمیق تر به آن نگاه کن.
دوست عزیر به نظر می یاد با این کدی که شما نوشتی،برنامه نویس باید نام تابع در زیر برنامه ایکه که پارامتر قبول می کنه ذکر بشه درسته؟اگه تو همین برنامه یک زیر برنامه دیگه رو به این تابع بدیم بازم قبول می کنه یا فقط DoSonthing رو اجرا می کنه؟
می خوام زیر برنامه ای داشته باشم که نام تابع رو از ورودی بگیره و اونو اجرا کنه، حالا هر تابعی که می خواد باشه.

visual_sadegh
سه شنبه 03 اردیبهشت 1387, 07:17 صبح
لان تابع SUM چه ارتباطی با روال Test داره ؟

اصلا متوجه نشدم چی میخوای کاری رو که میخوای انجام بدی شرح بده تا راه حل درستش رو پیدا کنی
این کدی که نوشتم دقیقا درست نیست فقط خواستم منظورم رو واضحتر بیان کرده باشم.
زیر برنامه test پارامتری از نوع تابع یا sub رو می گیره و اجرا می کنه، من یه همچین چیزی می خوام
می شه توابع دیگه رو پابلیک کرد و توی زیر برنامه صدا زد، ولی اگه قرار باشه این زیر برنامه یکی از این ده تا تابع رو اجرا کنه اونوقت با مشکل مواجه می شیم. امید وارم منظورم رو روشن بیان کرده باشم

sinpin
سه شنبه 03 اردیبهشت 1387, 08:00 صبح
زیر برنامه test پارامتری از نوع تابع یا sub رو می گیره و اجرا می کنه، من یه همچین چیزی می خوام
چرا از delegate ها استفاده نمیکنید ؟

visual_sadegh
سه شنبه 03 اردیبهشت 1387, 09:10 صبح
چرا از delegate ها استفاده نمیکنید ؟
من با این مبحث آشنایی ندارم ممکنه مختصر توضیحی بدین؟

sinpin
سه شنبه 03 اردیبهشت 1387, 09:28 صبح
من با این مبحث آشنایی ندارم ممکنه مختصر توضیحی بدین؟
دیلیگیت یک کلاس است که آبجکتهای ساخته شده از اون میتونن رفرنسی به متودهای آبجکت یا کلاسهای دیگه باشند و در مواقع لزوم اونها رو فراخوانی کنند.

من VB.net کار نمیکنم. لینک های زیر رو ببینید :

http://www.developerfusion.co.uk/show/5251/
http://www.knowdotnet.com/articles/printdelegate.html
http://www.stardeveloper.com/articles/display.html?article=2003070801&page=1