Delegate və Event (C#)

Mən delegate və event mövzusunu yeni oxumuşam. Amma onlar barədə fikirləşəndə başım qarışır.
Onların esas cəhətləri nələrdir?
Oxşar və fərqli cəhətləri nələrdir?


Yadda saxlama
Kateqoriya: Proqramlaşdırma . , , , , . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (6 cavab var)

(12:23, 18/03/2011 ) #2088

Əslində Event elə özü bir Delegate növüdür (Multicasted Delegate). Gördükləri işə görə demək olar ki eynidirlər. Bir eventi tanıdarkən onun tipi kimi bir delegate qoymaq lazımdır.

// Delegatenin tanıdılması
public delegate void ToplamaDelegete(int eded1, int eded2, int eded3); 

// Eventin tanıdılması
public event Hadise ToplamaHadisesi;

Amma əsas fərqləri ondadır ki, bəzən Eventdən istifadə etmək Delegate`yə nisbətən daha təhlükəsiz ola bilər. Burda gözlənilən təhlükə proqramçının səhvən hansısa bir sinfin işinə müdaxilə edib onu korlamasıdır.
Biz bir delegatenin üzərində bu əməlləri apara bilərik: hər hansı method`a bərabərləşdirə, silə, üzərinə method gələ və Method`unu silə bilərik
Amma Eventdə isə bunlardan yalnız ikisini edə bilərik: Üzərinə method əlavə edə və çıxa bilərik.
Başqa bir fərqləri də ondadır ki biz delegateni proqramın islənilən yerində cağıra bilərik:

Delegate() //şəklində

amma biz bunu Event üçün edə bilmərik, çünki event yalnız öz yerləşdiyi class daxilində çağırıla bilər. O da eyni şəkildə çağırılır. Buna gərə də təhlükəsizlik baxımından Event daha yaxşıdır məncə. Amma bu o demək deyil ki Delegateni bir qırağa qoyub ancaq Eventdən istifadə eləməl lazımdır 🙂

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(16:49, 18/03/2011 ) #2092

Salam Togrul. class ve object haqqinda genis melulat vere bilersen? nese men yaxsi basa dusmurem onlari

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (20:19, 18/03/2011 ) #2093

    Salam. Belə başa düşdüm ki, siz class və object`in məntiqini başa düşə bilmirsiz. Əgər elədirsə onda bunu belə bir misalla başa salmağa çalışacam:
    Məsələn “İnsanlar” deyəndə ağlımıza düşünən, danışan, öyrənən və s. bacarıqları olan bir canlı qrupu ağlıma gəlir. “Vəli” (və ya “Əli” 🙂 ) deyəndə mən mən yenə də düşünən, danışan, öyrənən və. bir canlı fikirləşirəm. Amma bütün “İnsanlar” eyni deyil, Əlinin özünə məxsus xüsusiyyətləri də ola bilər , məsələn, boyu, yaşı, bildiyi dillər və s. Burada biz “İnsanları” bir Class`a bənzədə bilərik. Əlini isə həmin “İnsanlar” sinfinə mənsub olan bir Obyekt (insan) olacaq.

    C#`də class`ın yaradılması nümunəsi:

    public class İnsanlar
    {
        int boy;
        int yas;
    
        void danis(string soz)
        {
            //danis
            Console.WriteLine( soz );
        }
    }
    

    Obyekti tanıtmaq üçün isə aşağıdakı koddan istifadə etməlisiniz:

     İnsanlar Eli = new İnsanlar() 

    gördüyünüz kimi əvvəl obyektin aid olduğu sinfin adını, sonra öz adını sonra =, sonra new sonra isə yenidən sinif adı və () yazırıq. (Bunun daha mürəkkəb formaları da var, hələlik bu bəs edər məncə)

    Sonra yaratdığımız obyektin xüsusiyyətlərini dəyişə də bilərik, Məsələn əlinin boyu uzanacaq, Yaşı artacaq və s.
    bu xüsusiyyətlərə çatmaq üçün nöqtə operatorundan istifadə etməliyik.

    Əli.boy = 140;
    Əli.yaş = 12;
     

    Əlinin aid olduğu sinifdə (İnsanlar) danışmaq bacarığı var. Yəni Əli də danışa bilər. Aşağıdakı kodla Əliyə “Salam” dedizdirsək:

     Əli.danış("Salam"); 

    Qeyd: yuxarıda yazdığım kodları olduğu kimi Visual C#`ə əlavə edib yoxlamağa çalışmayın. Çünki onları yalnız işləmə prinsipini başa salmaq üçün yazmışam, Compilerdən keirə bilməyə bilərsiniz.

    Daha aydın başa düşmək üçün bir kitaba ya online resursa müraciət etsəniz yaxşı olar. Ümid edirəm bəzi şeyləri başa düşməkdə sizə kömək edə bildim.

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(20:59, 18/03/2011 ) #2094

Bu haqda coxsayli yazilar vardir.
En sade ve qisa asagidaki link izah edir:
1. http://www.deknight.com/2010/10/difference-between-class-and-object-in.html

Lakin dahasi ucun bu linklere de baxmaginiz faydalidir, cunki bu sual artiq defelerle forumlarda verilib ve cavablandirilib :

1. http://docstore.mik.ua/orelly/java/javanut/ch03_01.htm

2. http://www.allinterview.com/showanswers/32551.html

3. http://forums.techarena.in/software-development/1131896.htm

4. http://www.codestyle.org/java/faq-Objects.shtml#classobjectdiff

5. http://en.wikipedia.org/wiki/Object_%28computer_science%29

6. http://en.wikipedia.org/wiki/Class_%28computer_science%29

7. http://answers.yahoo.com/question/index?qid=20081022052646AAtG6J3

8. http://mr-ponna.com/Question/343/What-is-the-difference-between-an-object-and-a-class-/

Yene nese sual olsa yazin.
Tesekkurler.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(17:53, 19/03/2011 ) #2098

Klass və Obyekt anlayışları müqaisə olunmamalıdırlar. Burda qeyri adi bir şey yoxdur. Ən sadə hala baxaq: tutaq ki, int tipindən hər-hansı x dəyişəni elan edirik aşağıdakı kimi:

 int  x;  

Bu zaman kompilyator başa düşür ki, biz

 int   

tipindən olan

 x  

adlı dəyişən elan etmişik. Daha sonra biz bu dəyişənə hər hansı qiymət mənimsədə bilərik (

 x=9;  

) v.s.
Klasslar isə

 int , char, double  

kimi standart yox, proqramçının
yaratdığı tiplərdir. Misal üçün yuxarıda Toğrul

 İnsanlar 

adlı yeni tip – klass yaratmışdır. Daha sonra isə bu yaratdığı tidən

 Eli  

adlı
dəyişən elan etmişdir. Klass tipindən olan dəyişənlərə

 obyekt  

deyirlər. Başqa sözlə desək, Yuxarıdakı nümunədə İnsanlar klass tipindən Eli obyekt dəyişəni elan edilib, yaradılıb.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(13:46, 28/03/2011 ) #2126

Cox sag olun. Minnetdaram. c#-dan maraqli linkler kitablar ve ya melumat tapanda paylasin zehmet olmasa. Haminiza ugurlar

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

E. Hacı cavab verdi - Xif mn kodu (7 gün əvvəl)

Khagrov cavab verdi - Axtardığım mahnını tapa bilmirəm kömək edin (26 gün əvvəl)

E. Hacı cavab verdi - Dünəndən Kompüterlə Twitter/X və Pinterest -ə girə bilmirəm. (33 gün əvvəl)

orkhanrza cavab verdi - AZ9095də bağlama qalıb (38 gün əvvəl)

Ismayil1997 cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (47 gün əvvəl)

revan orucov cavab verdi - Bakıda evə 100mbps+ internet verən provayder var? (51 gün əvvəl)

E. Hacı cavab verdi - WordPress sistemli saytda Facebook və İnstagram platformalarına özəl target_blank tənzimlənməsi haqqında... (53 gün əvvəl)

Jurnalist cavab verdi - WordPress sistemli saytda Facebook və İnstagram platformalarına özəl target_blank tənzimlənməsi haqqında... (53 gün əvvəl)

asssa1 cavab verdi - Riyazi proqramlar üçün proqram (54 gün əvvəl)

Aleks cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (61 gün əvvəl)

E. Hacı cavab verdi - İndiki dövrdə İngilis dili müəllimliyi ixtisasını seçməyə dəyər? (61 gün əvvəl)

Software Developer cavab verdi - Patreon , Ko-fi , Buy Me A Coffee , Kickstarter kimi saytlardan gələn pula görə vergi tutulur? (61 gün əvvəl)

E. Hacı cavab verdi - Riyazi proqramlar üçün proqram (62 gün əvvəl)

Software Developer cavab verdi - Kursda xaricdə təhsil imkanı nece yaranır? (62 gün əvvəl)

darkpixel cavab verdi - Patreon , Ko-fi , Buy Me A Coffee , Kickstarter kimi saytlardan gələn pula görə vergi tutulur? (62 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 608 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 434 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 23287 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2024