<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nurullah DEMİR - The day will come just wait.. &#187; c# olaylar</title>
	<atom:link href="http://www.ndemir.com/tag/c-olaylar/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ndemir.com</link>
	<description>The day will come just wait..</description>
	<lastBuildDate>Sat, 04 Feb 2012 02:10:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>C# : Events (olaylar)</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-events-olaylar</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-events-olaylar#comments</comments>
		<pubDate>Tue, 23 Feb 2010 15:06:36 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# event & delegates kullanımı]]></category>
		<category><![CDATA[c# events]]></category>
		<category><![CDATA[c# events nedir]]></category>
		<category><![CDATA[c# events olaylar kullanımı hakkında]]></category>
		<category><![CDATA[c# olaylar]]></category>
		<category><![CDATA[csharp]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2106</guid>
		<description><![CDATA[Merhaba arkadaşlar, tatil bitti okul başladı bloğu az asıyorum Bu dökümanda C# da temsilcilerin (delegate)  bir özel hali olan event yapısını anlatmaya çalışacağım inş. İlkönce olayın tanımını yapalım, olaylar bizim formda yaptığımız işlemleri kontrol eder. Örneğin butona tıklamamız bir olaydır, mouse ile üstüne gelmemiz gene bir olaydır. Bu olaylar esnasında istediğimiz kodların çalıştırılmasını/metodların çağrılmasını olay [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.ndemir.com/wp-content/uploads/c-sharp-150x150.png" alt="c sharp 150x150 C# : Events (olaylar) dot net c sharp " width="150" height="150" title="c sharp 150x150 C# : Events (olaylar) dot net c sharp " />Merhaba arkadaşlar, tatil bitti okul başladı bloğu az asıyorum <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : Events (olaylar) dot net c sharp " class='wp-smiley' title="icon smile C# : Events (olaylar) dot net c sharp " /><br />
Bu dökümanda C# da temsilcilerin (delegate)  bir özel hali olan <span style="color: #0000ff;">event </span>yapısını anlatmaya çalışacağım inş.</p>
<p>İlkönce <span style="text-decoration: underline;">olayın tanımı</span>nı yapalım, olaylar bizim formda yaptığımız işlemleri kontrol eder. Örneğin butona tıklamamız bir olaydır, mouse ile üstüne gelmemiz gene bir olaydır. Bu olaylar esnasında istediğimiz kodların çalıştırılmasını/metodların çağrılmasını <span style="color: #0000ff;">olay yöneticisi</span> dediğimiz <span style="text-decoration: underline;">temsilciler </span>üstlenir.</p>
<p>Olaylar sınıfların bir üye elemanıdır. Olayın nasıl tanımlandığını aşağıda görebilirsiniz.</p>
<p>[erişim belirleyici] <span style="color: #0000ff;">event </span>[delegate türü] [olay adı];</p>
<p>Tanımlanmasından da anlaşıldığı üzere, event yapısı bağımsız değildir.</p>
<p>Yine aynı yolu izleyelim, önce altta verilen kodu inceleyin (uygulanacak adımları sırasıyla verdim), kendiniz ne olduğunu anlamaya çalışın, ardından verdiğim açıklamalarla tam anlamaya çalışalım.<br />
<span id="more-2106"></span></p>
<pre class="brush: cpp; title: ; notranslate">
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _Event
{
    //Adım 1
    delegate void TemsilciHandler();

    class Sinifim
    {
        //Adım 2
        public event TemsilciHandler Eventim;

        //Adım 3
        public void eventMetodum()
        {
            //Adım 4
            if (Eventim!=null)
            {
                Eventim();
            }

        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Sinifim mye = new Sinifim();

            //Adım 5
            mye.Eventim += new TemsilciHandler(mye_Eventim);
            //Adım 6
            mye.eventMetodum();

            Console.Read();
        }

        //Adım 5
        static void mye_Eventim()
        {
            Console.WriteLine(&quot;olay gerçekleşti.&quot;);
        }
    }
}
</pre>
<ol>
<li>Adımda temsilcimizi tanımladık, geri dönüş tipi void ve parametresi olmayan bir temsilci.</li>
<li>Adımda TemsilciHandler tipinde bir <span style="color: #888888;">olay </span>tanımladık, <span style="color: #888888;">Eventim </span>olayı artık TemsilciHander ile beraber çalışacak.</li>
<li>Adımda olayımızın gerçekleşip gerçekleşmediğini kontrol edecek bir metod hazırladık.</li>
<li>Bu adımda if ile kontrol gerçekleştirmemizin sebebi şudur :<br />
Bu olay gerçekleştiğinde yapılacak iki şey vardır ;<br />
<span style="text-decoration: underline;"> 1.</span> Olay gerçekleştiği zaman herhangi bir iş yapılabilir (size kalmış)<br />
<span style="text-decoration: underline;"> 2.</span> Olay gerçekleştiğinde hiçbirşey yapılmayabilir.<br />
Eğer 1. şey olursa yani bir metod event a atanmış ise if kullanmaya gerek yoktu. Ama bu olay gerçekleştiğinde event a hiçbir metod atanmamışsa çalışma zamanında NullReferenceException hatasını alırız. Bunu her zaman kullanmamız gerekiyor. Eğer herhangi bir metod bağlanmışsa yani null değil ise Eventim olayına bağlanan metodu çağır. (Biz bu çağırma işlemini <a href="http://www.ndemir.com/coding/dot-net-c-sharp/c-delegates-temsilciler" >delegate </a>ile ilgili dökümanda yapmıştık.)</li>
<li> Adımımızda sınıfımızı kurduk ve Eventim olayına mye_Eventim metodunu atadık, dikkat edin burada yaptığımız işlemin delegate de yaptığımız bir işlemle hiçbir farkı yok, ikisinin atama şekli aynı.Biz mye.Eventim+= dedikten sonra iki defa tab tuşuna basarsak derleyici bizim için otomatik olarak metod üretiyor bu yüzden alttaki metodu da aynı adım içine aldım. Olay gerçekleştiğinde mye_Eventim metodununu çağrılmasını event&#8217;a bildirdik. Olay gerçekleştiği zaman bu metod çağırılacaktır. Biz olayda hiçbir kontrol gerçekleştirmediğimiz için metod direk çağrılacaktır.  Normalde olaylar belirli kontroller yapar, ben giriş olduğu için hiçbir kontrol gerçekleştirmedim.</li>
<li>Eğer Adım 3 te neden biz böyle bir metod tanımlama ihtiyacı duyduk ? diye sormuş olabilirsiniz, nedenini bu adımda yaptığımız işlem açıklıyor. Adım 6 da eventMetodum() metodunu çağırarak olayın gerçekleşip gerçekleşmediğini kontrol etmesini söyledik, dediğim gibi biz hiçbir kontrolden geçirmediğimiz için direk çalıştı. Eğer bir kontrol gerçekleştirseydik, olayın gerçekleşmediği zaman return; deyip metoddan çıkmasını sağlardık, olayın gerçekleştiği zaman ise Adım4. teki kodları yazardık.</li>
</ol>
<p>Giriş için bu kadarını yeterli görüyorum. ALLAH&#8217;a emanet olun, hayırlı çalışmalar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-events-olaylar/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

