<?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; csharp</title>
	<atom:link href="http://www.ndemir.com/tag/csharp/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ndemir.com</link>
	<description>The day will come just wait..</description>
	<lastBuildDate>Sat, 19 May 2012 20:13:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>C# : Kelime Ayırma</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-kelime-ayirma</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-kelime-ayirma#comments</comments>
		<pubDate>Sun, 25 Sep 2011 20:54:02 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# first word]]></category>
		<category><![CDATA[c# get first word]]></category>
		<category><![CDATA[c# how to get first word]]></category>
		<category><![CDATA[c# ilk kelime]]></category>
		<category><![CDATA[c# ilk kelimeyi alma]]></category>
		<category><![CDATA[c# kelime ayıklama]]></category>
		<category><![CDATA[c# kelime ayırıcı]]></category>
		<category><![CDATA[c# kelime ayırma]]></category>
		<category><![CDATA[c# kelime işlemleri]]></category>
		<category><![CDATA[c# kelime seçme]]></category>
		<category><![CDATA[c# selecting word]]></category>
		<category><![CDATA[csharp]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2934</guid>
		<description><![CDATA[Bir projemde bir method yazmam gerekti. Method ile verilen bir cümle/kelime öbeğinden istediğiniz karaktere göre istediğiniz kelimeleri çekmektedir. Methodumuz şu : Örneğin cümlemiz şu olsun : “Lütfullah fotoğraf makinesini bana getir.” cümlesinde ilk iki kelimeyi almak istersek ; Ayracımız ‘ ‘ (boşluk), almak istediğimiz kelime sayısı : 2 olacaktır. Buna göre methodu şöyle çağırmalıyız : [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="csharp" src="http://ndemir.com/img/csharp.png" alt="csharp C# : Kelime Ayırma dot net c sharp " width="155" height="176" />Bir projemde bir method yazmam gerekti. Method ile verilen bir cümle/kelime öbeğinden istediğiniz karaktere göre istediğiniz kelimeleri çekmektedir.</p>
<p>Methodumuz şu :</p>
<pre class="brush: cpp; title: ; notranslate"> string getWord(string input, char bracket, int countOfWord)
        {
            string myWords = null;
            int count = 0;

            for (int i = 0; i &lt; input.Length; i++)
            {
                if (input[i] != bracket)
                {
                    myWords += input[i];
                }
                else
                {
                    count++;
                    if (count == countOfWord)
                    {
                        return myWords;
                    }
                }
            }
            return myWords;
        }</pre>
<p>Örneğin cümlemiz şu olsun : “Lütfullah fotoğraf makinesini bana getir.” cümlesinde ilk iki kelimeyi almak istersek ; Ayracımız ‘ ‘ (boşluk), almak istediğimiz kelime sayısı : 2 olacaktır.</p>
<p>Buna göre methodu şöyle çağırmalıyız :</p>
<pre title="">string cumle = "Lütfullah fotoğraf makinesini bana getir.";
string gelenDeger = getWord(cumle,' ',2);</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-kelime-ayirma/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>C# : SQL Server Stored Procedure Kullanımı</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-sql-server-stored-procedure-kullanimi</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-sql-server-stored-procedure-kullanimi#comments</comments>
		<pubDate>Sat, 10 Jul 2010 07:47:59 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# commandtype]]></category>
		<category><![CDATA[c# procedure]]></category>
		<category><![CDATA[c# prosedür]]></category>
		<category><![CDATA[c# sql server procedure kullanımı]]></category>
		<category><![CDATA[c# sql server proedür hakkında]]></category>
		<category><![CDATA[c# sql server prosedür kullanımı]]></category>
		<category><![CDATA[c# sqlparameter]]></category>
		<category><![CDATA[c# stored prosedür]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[sql server procedure]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2397</guid>
		<description><![CDATA[Önceki yazımızda SQL Server da nasıl Stored Procedure yazılır onu anlatmıştım (bu yazıya başlamadan belirttiğim yazıyı okumanızı tavsiye ederim). Bu yazımda C# tarafında oluşturduğuz prosedürü nasıl kullanabiliriz, onu göstereceğim inş Önceki yazımızda hatıralarsanız kendi sınıfımızı yazmıştık verileri saklamak için. Yine aynı yolu izliyeceğiz. Kullanımı o kadar da zor değil. İlk önce aşağıdaki kodu inceleyelim, sonra [...]]]></description>
			<content:encoded><![CDATA[<p>Önceki yazımızda <a href="http://www.ndemir.com/_net/sql-server/sql-server-prosedur-hk" >SQL Server da nasıl Stored Procedure yazılır</a><img class="alignleft" src="http://ndemir.com/img/csharp.png" alt="csharp C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " width="155" height="176" title="csharp C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " /> onu anlatmıştım (bu yazıya başlamadan belirttiğim yazıyı okumanızı tavsiye ederim). Bu yazımda C# tarafında oluşturduğuz prosedürü nasıl kullanabiliriz, onu göstereceğim inş <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " class='wp-smiley' title="icon smile C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " /> </p>
<p>Önceki yazımızda hatıralarsanız kendi sınıfımızı yazmıştık verileri saklamak için. Yine aynı yolu izliyeceğiz.<br />
Kullanımı o kadar da zor değil. İlk önce aşağıdaki kodu inceleyelim, sonra da açıklayalım.</p>
<p>Kategorilerimizi sakladığımız sınıfımız şöyle ;</p>
<pre class="brush: cpp; title: ; notranslate">
using System;

namespace OrnekUygulama
{
    class KategoriInfo
    {
        int katID;
        public int KatID
        {
            get { return katID; }
            set { katID = value; }
        }

        string katAdi;
        public string KatAdi
        {
            get { return katAdi; }
            set { katAdi = value; }
        }

        public KategoriInfo(int katIDs,string katAdi)
        {
            this.KatAdi = katAdi;
            this.KatID = katID;
        }
    }
}
</pre>
<p><span id="more-2397"></span><br />
<em>Sınıfı neden oluşturduğumuzdan bahsetmeyeceğim, yukarıda belittiğim yazıda detaylı olarak bahsedilmiştir.<br />
</em></p>
<p>Şimdi gelelim Stored Precedure kullanımına;</p>
<pre class="brush: cpp; title: ; notranslate">
   SqlConnection con = new SqlConnection(&quot;Connection Stringimiz..&quot;);
            SqlCommand cmd = new SqlCommand(&quot;KategorileriGetir&quot;, con);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter _param = new SqlParameter(&quot;@kategoriDurum&quot;, SqlDbType.Int);
            _param.Value = 1;
            cmd.Parameters.Add(param);
            SqlDataReader _dr = cmd.ExecuteReader();
            List&lt;KategoriInfo&gt; listem = new List&lt;KategoriInfo&gt;();

            while (_dr.Read())
            {
                KategoriInfo info = new KategoriInfo(_dr.GetString(1), _dr.GetInt32(0));
                listem.Add(info);
            }
//Bu satırdan itibaren verilerimiz listem nesnesinde saklıdır. Bundan sonrası size kalmış : )
</pre>
<p>Şimdi ne yaptık onu açıklayalım.<br />
<strong>2. Satırda </strong><br />
SqlCommand da CommanString i yerine prosedürümüzün adını yazdık.</p>
<p><strong>3.Satırda</strong><br />
Daha sonra SqlConnection&#8217;a dedik ki ; sana verdiğimiz string i commandtext olarak algılama bunun tipi bir Stored Procedure ona göre davran. (Stored Procedure kullanmadığımız zamanlarda varsayılan değeri CommandText olarak atanır)</p>
<p><strong>Bu prosedürümüz dışarıdan değer alıyor mu ? Evet alıyor</strong><br />
<strong>4. Satırda</strong><br />
Prosedürümüz parametre alıyorsa bizim bu parametreyi göndermemiz gerekiyor. O yüzden 4. satırda yeni bir parametre tanımladım. Ve dedim ki ; bu parametremin adı &#8220;@kategoriDurum&#8221; değeri ise SqlDbType.Int dir.<br />
<strong>5.Satırda</strong><br />
Buraya kadar parametremizi tanımlamıştık, şimdi ise parametremizin değerini giriyoruz.<br />
<strong>6.Satırda</strong><br />
Son olarak ta SqlCommand a dedimki, sen şu parametreyi al sakla, sana verdiğim prosedürü çalıştırırken bu parametrelere ihtiyacın olacak ve Add metodu ile SqlParameter tipinde olan _param i ekledik.<br />
Eğer parametreleriniz çok ise, tek tek SqlParameter tipinde değerler oluşturmayın. SqlParameter[] olarak tanımlayın ve SqlCommand a AddRange metodu ile oluşturduğunuz diziyi ekleyin.</p>
<p>Gerisi zaten normal sql command çalıştırma ile aynı olduğundan burada nokta koyuyorum <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " class='wp-smiley' title="icon smile C# : SQL Server Stored Procedure Kullanımı sql server dot net c sharp " /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-sql-server-stored-procedure-kullanimi/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C# : Diziler, ArrayList, List arasındaki farklar</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-diziler-arraylist-list-arasindaki-farklar</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-diziler-arraylist-list-arasindaki-farklar#comments</comments>
		<pubDate>Thu, 24 Jun 2010 07:53:17 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# array arraylist list]]></category>
		<category><![CDATA[c# arraylist]]></category>
		<category><![CDATA[c# collections]]></category>
		<category><![CDATA[c# generic]]></category>
		<category><![CDATA[c# koleksiyonlar]]></category>
		<category><![CDATA[c# list]]></category>
		<category><![CDATA[csharp]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2342</guid>
		<description><![CDATA[Bugün çok kullanacağımız iki yapıyı sizlere kısa ve öz şekilde aktaracağım. ArrayList ve List. Diziler : Temel dizidir. Kötü tarafı, tanımlanırken sınır getirilmesi, 10 elemanlı bir diziye 11 eleman tanımlayamayız.  Kullanımı : Sinif[] nesne = new Sinif[5]; Gördüğünüz gibi maximum 5 eleman alabilir. Şimdi ArrayList ve List&#8217;e bakalım neler yapılabiliyor. ArrayList : Dizinin yaptığı tüm [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://ndemir.com/img/csharp.png" alt="csharp C# : Diziler, ArrayList, List arasındaki farklar dot net c sharp " width="155" height="176" title="csharp C# : Diziler, ArrayList, List arasındaki farklar dot net c sharp " />Bugün çok kullanacağımız iki yapıyı sizlere kısa ve öz şekilde aktaracağım. ArrayList ve List.<br />
<strong>Diziler :</strong> Temel dizidir. Kötü tarafı, tanımlanırken sınır getirilmesi, 10 elemanlı bir diziye 11 eleman tanımlayamayız.  <span style="text-decoration: underline;"><br />
Kullanımı :</span><br />
Sinif[] nesne = new Sinif[5];<br />
Gördüğünüz gibi maximum 5 eleman alabilir. Şimdi ArrayList ve List&#8217;e bakalım neler yapılabiliyor.</p>
<p><strong><br />
ArrayList : </strong>Dizinin yaptığı tüm işleri yapar ama sınır getirilmediğinden istediğimiz kadar eleman ekleyebiliriz. Aldığı her elemanı boxing işlemi ile object olarak sakladığından Hertürlü değeri alabilir. Add,Remove,Sort gibi metodlar kullanışlı metodlardır.</p>
<p><span style="text-decoration: underline;">Kullanımı :</span><br />
ArrayList liste = new ArrayList();</p>
<p>liste.Add(nesnemiz); // yeni eleman ekleniyor.</p>
<p><strong>List :</strong></p>
<p>List dizinin yaptığı tüm işlemleri yapar buna ek olarak en önemli özelliği belirlenen türde veri saklayabilir. Bu sebepten dolayı veri saklanırken herhangi bir boxing işlemine tabi tutulmayacağından performans olarak ArrayList&#8217;den daha iyidir.</p>
<p><span style="text-decoration: underline;">Kullanımı :</span><br />
List&lt;Turumuz&gt; liste = new List&lt;Turumuz&gt;();</p>
<p>Kullanımı ArrayList gibidir, ekleme, silme vs..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-diziler-arraylist-list-arasindaki-farklar/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>C# : Windows API&#8217;ler</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-windows-apiler</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-windows-apiler#comments</comments>
		<pubDate>Sun, 30 May 2010 13:17:51 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# api]]></category>
		<category><![CDATA[c# api kullanımı]]></category>
		<category><![CDATA[c# cd sürücüsü açma]]></category>
		<category><![CDATA[c# cdrom open]]></category>
		<category><![CDATA[c# da api kullanımı]]></category>
		<category><![CDATA[c# da windows api kullanımı]]></category>
		<category><![CDATA[c# windows]]></category>
		<category><![CDATA[c# windows api]]></category>
		<category><![CDATA[c# windows apiler hakkında]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[csharp windows api]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2308</guid>
		<description><![CDATA[Hayırlı işler dilerim herkese. Bugün C#&#8217;da Windows tarafından sunulan API leri nasıl kullanabileceğimizi göstereceğim inş. Öncelikle API nedir ? API&#8217;nin açılımı ; Application Programmin Interface (Uygulama Programlama Arayüzü)dir. API&#8217;ler bize başka sistemlerle etkileşimi sağlar. Ben çok geniş almayacağım ele, C# da neden ihtiyaç duyulur bunu aktaracağım. Biz C# da herşeyi yapamıyoruz. Örneğin CD sürücüsünü kontrol [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="C#,C# windows api, csharp" src="http://ndemir.com/img/csharp.png" alt="csharp C# : Windows APIler dot net c sharp " width="155" height="176" />Hayırlı işler dilerim herkese.<br />
Bugün C#&#8217;da Windows tarafından sunulan API leri nasıl kullanabileceğimizi göstereceğim inş.</p>
<p>Öncelikle API nedir ?</p>
<p>API&#8217;nin açılımı ; Application Programmin Interface (Uygulama Programlama Arayüzü)dir. API&#8217;ler bize başka sistemlerle etkileşimi sağlar. Ben çok geniş almayacağım ele, C# da neden ihtiyaç duyulur bunu aktaracağım. Biz C# da herşeyi yapamıyoruz.</p>
<p>Örneğin CD sürücüsünü kontrol edebileceğimiz bir yapı bulunmamaktadır .NET Framework da (Eğer varsa bile bunu yine temelde API ile sağlamaktadır.)  Yada faremiz yaptığımız bir uygulamanın üstündendeyken koordinatlarını alabiliriz, ne zaman ki formu gizledik o zaman işte biz farenin koordinatlarını alamayız. Ama Windows&#8217;un bize sağladağı API&#8217;ler ile bu bilgiye ulaşabiliriz.</p>
<p>API&#8217;ler her dilde kullanılır ancak her dilde kullanım şekli farklıdır.<br />
API&#8217;ler işletim sistemine göre farklılık gösterir. Bu duruma dikkat etmeniz gerekecektir.<br />
İhtiyaç duyduğunuz API&#8217;leri aratarak bulabilirsiniz, bunun için malesef pek kaynağınız yok(google hariç <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_biggrin.gif' alt="icon biggrin C# : Windows APIler dot net c sharp " class='wp-smiley' title="icon biggrin C# : Windows APIler dot net c sharp " />  )<span id="more-2308"></span></p>
<h4>API&#8217;nin Kullanımı ;</h4>
<pre class="brush: cpp; title: ; notranslate">
        [DllImport(&quot;winmm&quot;)]
        private static extern int mciSendString(string strCommand, StringBuilder strReturn, int iReturnLenght, IntPtr hwndCallback);

        void cdCikar()
        {
            //cd rom sürücüsü çıkıyor
            mciSendString(&quot;Set cdaudio door open&quot;, null, 0, IntPtr.Zero);
        }
</pre>
<p>DllImport sınıfını kullanabilmemiz için, using bloğuna</p>
<pre class="brush: cpp; title: ; notranslate">
using System.Runtime.InteropServices;
</pre>
<p>namespace&#8217;ini tanımlamız gerekiyor.</p>
<p><span style="color: #888888;">Şimdi ne yaptığımızı açıklayayım; </span></p>
<p>DllImport ile kullanmak istediğimiz dll in adını yazıyoruz. <span style="text-decoration: underline;">Hemen altına</span> ise extern ile genişleteceğimiz yeni bir metod tanımlıyoruz, bu tanımlamayı bulduğunuz API&#8217;e uygun halde tanımlamanız gerekiyor, alacağı parametre türleri vs.</p>
<p>Yukarıda kullandığımız API cd sürücümüzü açıyor. cdCikar() dediğimizde cd sürücüsünü çıkaracaktır. Windows API&#8217;lerini kullanabilmek için bunları bilmemiz yeterli.</p>
<p>Dediğim gibi API leri kendiniz bocalamayın framework un orasını burasını kurcalayıp, ihtiyaç duyduğunuz zaman Google&#8217;dan aratın, işletim sistemine dikkat edin yanlız. <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : Windows APIler dot net c sharp " class='wp-smiley' title="icon smile C# : Windows APIler dot net c sharp " /><br />
Bir sonraki yazıda çeşitli birkaç API örneği vereceğim inş.</p>
<p>Hayırlı günler dilerim.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-windows-apiler/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<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>
		<item>
		<title>C# : Kalıtım</title>
		<link>http://www.ndemir.com/_net/dot-net-c-sharp/c-kalitim</link>
		<comments>http://www.ndemir.com/_net/dot-net-c-sharp/c-kalitim#comments</comments>
		<pubDate>Mon, 04 Jan 2010 00:16:17 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# kalıtım]]></category>
		<category><![CDATA[c# sınıf türetme]]></category>
		<category><![CDATA[c# ta kalıtım Inheritance]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[protected erişim belirleyicisi]]></category>
		<category><![CDATA[protected kullanımı]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=1888</guid>
		<description><![CDATA[Merhaba arkadaşlar, bu dökümanda C# da kalıtıma giriş yapacağız. Kalıtım nedir ne değildir ona göz atalım. Kalıtım nesne yönelimli programlamanın en önem özelliğidir. Kalıtım ile nesneler birbirinden türetilir. Türetilen sınıf türediği sınıfın tüm özelliklerini kalıtım yolu ile devralır. Şunuda unutmayalım kalıtım yolu ile sadece public ve protected elemanlar aktarılır (Yazının devamında private elemanlara nasıl ulaşılacağını [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ndemir.com/wp-content/uploads/c-sharp.png" ><img class="alignleft size-thumbnail wp-image-1887" title="c sharp" src="http://www.ndemir.com/wp-content/uploads/c-sharp-150x150.png" alt="c sharp 150x150 C# : Kalıtım  dot net c sharp " width="150" height="150" /></a>Merhaba arkadaşlar, bu dökümanda C# da kalıtıma giriş yapacağız. Kalıtım nedir ne değildir ona göz atalım.</p>
<p>Kalıtım nesne yönelimli programlamanın en önem özelliğidir. Kalıtım ile nesneler birbirinden türetilir. Türetilen sınıf türediği sınıfın tüm özelliklerini kalıtım yolu ile devralır. Şunuda unutmayalım kalıtım yolu ile sadece public ve protected elemanlar aktarılır (Yazının devamında private elemanlara nasıl ulaşılacağını göstereceğim.). C# da birbirinden türemiş bi hayli sınıf bulunmaktadır.  Nesnenin türediği sınıfa base sınıf denir.</p>
<p>Türetme işlemi <strong>: </strong>operatörü ile yapılır. Bilgi olması açısından veriyorum ; Örneğin StringBuilder yazıp sağ tuşla bastıktan sonra &#8220;Go To Defination&#8221; a basın ardından açılan sayfada StringBuilder sınıfının base sınıfını görebilirsiniz.</p>
<p>Gelin bir örnek üstünde iyice irdeleyelim.  Bir emlak uygulaması yapalım.</p>
<p>Ev base sınıfımız, SatılıkEv de türeyen sııf olsun<span id="more-1888"></span></p>
<pre class="brush: cpp; title: ; notranslate">
using System;

namespace KalıtımBlog
{
    class Ev
    {
        public string semt;
        public int alan;
        public string adres;

        public void evGoster()
        {
            Console.WriteLine(&quot;Evin özellikleri ; \nSemti: {0}\nAlanı: {1}\nAdresi:{2}&quot;, semt, alan, adres);
        }

    }

    //SatilikEv sınıfının base sınıfını Ev olarak tanımlıyoruz
    class SatilikEv : Ev
    {
        public int fiat;

        public void fiatGoster()
        {
            Console.WriteLine(&quot;Fiatı : {0}&quot;, fiat);
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            SatilikEv ev = new SatilikEv();
            ev.adres = &quot;Mehmet Cenk Sokağı No:23&quot;;
            ev.alan = 250;
            ev.semt = &quot;Beyoğlu&quot;;
            ev.fiat = 1000;
            ev.evGoster();
            ev.fiatGoster();

            Console.WriteLine(&quot;\n2.Ev Yazdırılıyor..\n&quot;);

            SatilikEv ev2 = new SatilikEv();
            ev2.adres = &quot;Cennet Mahallesi Bilmem Ne Sokağı No:23&quot;;
            ev2.alan = 157;
            ev2.semt = &quot;Beykızı&quot;;
            ev2.fiat = 2680;
            ev2.evGoster();
            ev2.fiatGoster();

            Console.Read();
        }
    }

}
</pre>
<p>Programı çalıştırdığımızda çıktı aşağıdaki şekil olmalıdır ;</p>
<blockquote><p>Evin özellikleri ;<br />
Semti: Beyoğlu<br />
Alanı: 250<br />
Adresi:Mehmet Cenk Sokağı No:23<br />
Fiatı : 1000</p>
<p>2.Ev Yazdırılıyor..</p>
<p>Evin özellikleri ;<br />
Semti: Beykızı<br />
Alanı: 157<br />
Adresi:Cennet Mahallesi Bilmem Ne Sokağı No:23<br />
Fiatı : 2680</p></blockquote>
<p><strong>19</strong>. Satırda görüleceği gibi <em>SatilikEv </em>i <em>Ev </em>sınıfından türettik, bu türeme işleminden sonra Ev sınıfındaki bütün public elemanlar SatilikEv sınıfına aktarıldı. <em>Main </em>metodumuzda da rahat bir şekilde kullanabildik. Ve <strong>Ev.fiatGoster(); </strong> geçersiz bir kullanımdır çünkü <em>Ev </em>sınıfı türeyen nesnenin özelliklerini kesinlikle taşımaz. Türeyen sınıfın içerisinde base sınıfa rahatlıkla ulaşabiliyorsunuz, <strong>base</strong> anahtar sözcüğüyle. Örneğin <em>base.alan</em> dediğinizde Ev sınıfının içerisindeki alan fieldine ulaşır.</p>
<p>Daha önce belirttiğim gibi sadece public elemanlar geçiyor, siz private birşey tanımlarsanız onu türettiğiniz sınıfta kullanamayacaksınız. Private field lara ulaşabilmeniz için get ve set blokları tanımlayabilirsiniz. Bunu field a sağ tuşla basıp ; &#8220;<em>Refactor>Encapsulate field>Ok</em>&#8221; ile yapabilirsiniz. </p>
<p>Bunun haricinde <strong>protected </strong>erişim belirleyicisini kullanabiliriz. Tanımladığımız fieldleri türetilen sınıfta rahatlıkla kullanmamıza olanak veriyor. Ama biz bunu Main metodunda kullanamayız, <strong>protected </strong>erişim belirleyicisi ile tanımlanmış elemanlara sadece türetilen sınıf üzerinden ulaşabiliriz, elemanın güvenliği için böyle bir yol izlenmiştir. Aksi takdirde <em>Ev </em>sınıfında öyle bir field düşünün ki değeri değiştiğinde sizin tüm sınıflarınızdaki verilerin değerleriyle bağlantılı olsun siz bu field e ulaşılmasına izin verirseniz, değeri değiştirildiğinde kötü sonuçlar ortaya çıkabilir. Aşağıdaki program derlenmeyecektir çünkü protected ile tanımladığımız field lara <em>Main </em>metodu üzerinden değer ataması yapmaya çalışıyoruz.</p>
<pre class="brush: cpp; title: ; notranslate">
using System;

namespace KalıtımBlog
{
    class Ev
    {
        protected string semt;
        protected int alan;
        protected string adres;

        public void evGoster(string semt)
        {
            Console.WriteLine(&quot;Evin özellikleri ; \nSemti: {0}\nAlanı: {1}\nAdresi:{2}&quot;, semt, alan, adres);

        }

    }

    class SatilikEv : Ev
    {
        public int fiat;

        public void fiatGoster()
        {
            Console.WriteLine(&quot;Fiatı : {0}&quot;, fiat);

        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            SatilikEv ev = new SatilikEv();
            ev.adres = &quot;Mehmet Cenk Sokağı No:23&quot;;
            ev.alan = 250;
            ev.semt = &quot;Beyoğlu&quot;;
            ev.fiat = 1000;
            ev.evGoster();
            ev.fiatGoster();

            Console.Read();
        }
    }

}
</pre>
<p>Değer atama işlemlerini nasıl yapacağız o zaman ? Diye sorarsanız ; Cevabı : Sınıfı kurarken değerleri isteyebiliriz. Son olarak programımız aşağıdaki şekilde olacaktır.</p>
<pre class="brush: cpp; title: ; notranslate">
using System;

namespace KalıtımBlog
{
    class Ev
    {
        protected string semt;
        protected int alan;
        protected string adres;

        public Ev(string semt, int alan, string adres)
        {
            this.semt = semt;
            this.alan = alan;
            this.adres = adres;
        }

        public void evGoster()
        {

            Console.WriteLine(&quot;Evin özellikleri ; \nSemti: {0}\nAlanı: {1}\nAdresi:{2}&quot;, semt, alan, adres);

        }

    }

    class SatilikEv : Ev
    {
        public int fiat;

        public SatilikEv(string semt,int alan,string adres ,int fiat):base(semt,alan,adres)
        {
            this.fiat = fiat;
        }

        public void fiatGoster()
        {

            Console.WriteLine(&quot;Fiatı : {0}&quot;, fiat);
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            SatilikEv ev = new SatilikEv(&quot;Semtimiz&quot;, 200, &quot;Adresimiz&quot;, 2598);
            ev.evGoster();
            ev.fiatGoster();

            Console.Read();
        }
    }

}
</pre>
<p>Şimdi yukarıdaki programda ne işlemler yaptık sırasıyla göz atalım;<br />
<strong>11</strong>.Satırda oluşturduğumuz constructor ile field değerlerini dışarıdan aldık ve atamaları gerçekleştirdik.<br />
<strong>31</strong>.Satırda <strong>SatilikEv</strong> için bir constructor oluşturduk fakat bu constructor sıradan bir constructor değil, burada <em>base</em> anahtar sözcüğü göze çarpıyor. Biz daha önce de belirttiğimiz gibi 11. satırda <strong>Ev</strong> <em>base</em> sınıfı için bir constructor oluşturmuştuk ve dışarıdan değer alıyordu, biz bu constructora mecburen değer atamak zorundayız, bunu da <em>SatilikEv</em>&#8216;in constructor ini çağırırken gerçekleştiriyoruz. Kısacası : <em>base</em> sınıfın constructor ına burada değer ataması yapılıyor.<em> base(semt,alan,adres) buradaki değerler</em> öncesinde tanımlanan semt,alan ve adres değişkenleridir. Bu değişkenleri Ev construcotruna gönderiyoruz.</p>
<p><em>Not: Türeyen nesne kurulurken her zaman türediği sınıf arkaplanda otomatik olarak kurulur. Ve her zaman önce base sınıf kurulur.</em></p>
<p>Türetilen nesnelerin türediği sınıflar her zaman en sade şekilde olmalıdır, gidipte Ev sınıfında Fiat diye bir field tanımlamak yanlış olur çünkü ; İleride oluşturacağınız bir <em>KiralikEv </em>sınıfında bu fuzuli bir eleman olacağından en sade şekilde tanımlamak mantıklı ve kullanışlıdır.</p>
<p>Konuyla alakalı sorularınız varsa buyrun sorun <img src='http://www.ndemir.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile C# : Kalıtım  dot net c sharp " class='wp-smiley' title="icon smile C# : Kalıtım  dot net c sharp " /><br />
Vesselam.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/dot-net-c-sharp/c-kalitim/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri</title>
		<link>http://www.ndemir.com/_net/c-temelleri-enum-sabitinin-bilinmeyen-yonleri</link>
		<comments>http://www.ndemir.com/_net/c-temelleri-enum-sabitinin-bilinmeyen-yonleri#comments</comments>
		<pubDate>Tue, 10 Nov 2009 15:17:35 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[c sharp enum nedir]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[csharp enum hakkında]]></category>
		<category><![CDATA[enum hakkında]]></category>
		<category><![CDATA[enumun bilinmeyen yönleri]]></category>

		<guid isPermaLink="false">http://www.nurullah.us/?p=1574</guid>
		<description><![CDATA[Enum sabitleri geliştirici dostu tipler olarak düşünülebilir. Çoğu zaman uygulamalarımız içerisinde yer alan algoritmaların bazı durumlara göre farklı şekillerde hareket etmesi beklenir. Bu hareket serbestliğini sağlamanın kolay yollarından birisi, koşulların doğru şekilde tespitinden sonra, uygun bir biçimde ele alınabilmesidir. Bu amaçla sayısal değerler ile yapılan karşılaştırmalar son derece yerinde olmaktadır. Ancak algortima işleyişini değiştirmek için [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1582" title="enum csharp" src="http://www.ndemir.com/wp-content/uploads/enum-csharp.png" alt="enum csharp C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net " width="266" height="116" />Enum sabitleri geliştirici dostu tipler olarak düşünülebilir. Çoğu zaman uygulamalarımız içerisinde yer alan algoritmaların bazı durumlara göre farklı şekillerde hareket etmesi beklenir. Bu hareket serbestliğini sağlamanın kolay yollarından birisi, koşulların doğru şekilde tespitinden sonra, uygun bir biçimde ele alınabilmesidir. Bu amaçla sayısal değerler ile yapılan karşılaştırmalar son derece yerinde olmaktadır. Ancak algortima işleyişini değiştirmek için sayıları ele almak, eğer bu algoritmalar pek çok yerde kullanılacaksa çeşitli zorluklara neden olabilir. En azından hangi sayının ne anlama geldiğini yada o sayı için koşulun nasıl değiştirilmesi gerektiğini hatırlamak zor olabilir. Neyseki enum sabitleri sayesinde, bu tip sayıların anlamlı şekilde isimlendirilerek kullanılabilmesi sağlanmıştır.<span id="more-1574"></span><br />
Framework kendi içerisinde kullandığı pek çok yapıda aktif olarak enum sabitlerine başvurmaktadır. Örnek olarak, DataReader’ lar için kullanılan CommandBehavior, DataTable içerisindeki satırların durumuna ilişkin bilgiler için kullanılan DataRowState ve benzerleri gibi daha pek çok enum tipini sayabiliriz. Built-in tipler dışında kendimizde enum sabitleri geliştirebiliriz ki buda işin en güzel taraflarından birisidir. Ne varki enum sabitlerini geliştirmek, sadece sayılara anlamlı isimler vermek kadar sade bir konu değildir. İşte bu makalemizde enum konusunun derinlerine inmeye çalışacağız. Temel olarak ele alacağımız konuları aşağıdaki başlıklar altında işlemeye çalışacağız.</p>
<p>*<br />
* Bir enum sabitine ait içeriğin çalışma zamanında dinamik olarak elde edilmesi.<br />
* String bir verinin, bir enum sabiti içeriğindeki karşılığının elde edilmesi.<br />
* Enum sabitlerinin içeriğinin ToString metodu ile farklı biçimlerde elde edilmesi<br />
* Veyalanmış (Ored) içeriklerin kullanımı.<br />
* IsDefined metodu her zaman yeterli olmayabilir.</p>
<p>1. Bir enum sabitine ait içeriğin çalışma zamanında dinamik olarak elde edilmesi.<br />
Bazı durumlarda enum sabitlerinin tüm içeriğinin çalışma zamanında bilinmesi ve kullanıcıya gösterilmesi gerekebilir. Söz gelimi, geliştirdiğimiz bir grafik uygulama olduğunu düşünelim. Tual üzerine çizilen resimlerin herhangibir şekilde saklandığını ve zaman içerisinde her hangibir noktada açıldıklarında, son kaydedildikleri halleriyle kullanıcıya sunulmak istendiklerini düşünelim. Çizilen şekiller ve bunlara ilişkin lokasyon, derinlik, ölçüler vb bilgileri saklamak için serileştirme gibi tekniklerden tutunda veritabanına kayıt etme yada özel formatlar ile fiziki dosyalara aktarma gibi pek çok yol tercih edilebilir. Lakin bu tip bir uygulamada ekranda olupta hatırlanması gereken şekilleri nerede saklarsak saklayalım nasıl bir veri tipi ile saklayacağımız önem kazanabilir. Çizilebilecek olan şekilleri string olarak adları ile tutmaktansa bunlara karşılık gelen sayısal değerlerden faydalanmak çoğu zaman saklanacak içeriğin boyutunu azaltabilir ve buda verinin daha az yer tutmasını sağlayabilir.<br />
Çizilebilecek şekil tiplerinin sayısal olan karşılıklarının sadece saklama amacıyla ele alınması güzeldir. Peki geliştirici yada son kullanıcı bu sayıları nasıl anlayabilir? Enum sabitleri bu noktada işimize yarayabilecek bir tiptir. Peki bu şekil tiplerinin kullanıcı tarafından etkin bir şekilde kullanılabilmesi için ne yapabiliriz? İşte bu noktada System.Enum sınıfının static GetNames metodu devreye girmektedir. GetNames metodu bir enum sabiti içerisindeki tüm değerlerin string formatından bir dizi ile elde edilebilmesini sağlamaktadır. Aşağıdaki windows uygulamasında çeşitli şekilleri bünyesinde barındıran bir enum sabitinin içeriğinin çalışma zamanında farklı şekillerde elde edilişi gösterilmeye çalışılmaktadır. (Benzer istekler bir Web uygulamasında hatta bir web uygulamasında da göz önüne alınabilir.)<br />
<img src="http://www.csharpnedir.com/mimages/bsenyurt/mk179_1.gif" alt="mk179 1 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net "  title="mk179 1 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net " /><br />
Uygulamada Sekil isimli kullanıcı tanımlı bir enum sabiti kullanılmaktadır. Örnek olması açısından enum sabiti içerisindeki değerler ComboBox, ListBox kontrollerine birer öğe olarak eklenmiş ayrıca her bir değer için birer RadioButton kontrolü dinamik olarak oluşturulmuştur. Enum sabiti içeriği ve uygulama kodumuz aşağıdaki gibidir.<br />
Sekil Enum sabitimiz ve içeriği;</p>
<p><img src="http://www.csharpnedir.com/mimages/bsenyurt/mk179_2.gif" alt="mk179 2 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net "  title="mk179 2 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net " /></p>
<pre class="brush: cpp; title: ; notranslate">
public enum Sekil
{
Kare, Dortgen, Daire, Elips, Cizgi, ParalelKenar, Altigen, Ucgen
} Uygulama kodlarımız;
/* parametre olarak verilen Sekil enum tipi içerisindeki tüm değerlerin adları string dizisine alınır.*/
string[] sekilTipleri = Enum.GetNames(typeof(Sekil));
foreach (string sekilTipi in sekilTipleri)
{ // ComboBox kontrolüne eklenir.
cmbSekiller.Items.Add(sekilTipi);
// ListBox kontrolüne eklenir.
lstSekiller.Items.Add(sekilTipi);

// RadioButton haline getirilip FlowLayoutPanel kontrolüne eklenir.
RadioButton rdbSekilTipi = new RadioButton();
rdbSekilTipi.Name = sekilTipi;
rdbSekilTipi.Text = sekilTipi;
grpSekiller.Controls.Add(rdbSekilTipi);
</pre>
<p>} Tekrar etmek gerekirse önemli olan nokta, GetNames metodu ve metodun döndürdüğü string dizinin kullanılış şeklidir. Dikkat ederseniz metoda parametre olarak Sekil isimli enum sabitimizin tipi (type) verilmiştir. Burada dikkat edilmesi gereken bir nokta daha vardır. Kullanıcı ComboBox, ListBox veya RadioButton kontollerinden birini seçtiğinde, seçilen bu bilginin enum sabitimiz içerisindeki hangi değere karşılık geldiğini tespit etmek. İşte bu konuyu ikinci maddemizde irdeleyeceğiz.<br />
2. String bir verinin, bir enum sabiti içeriğindeki karşılığının elde edilmesi.<br />
Belkide ilk akla gelen yöntem bir switch case yada çoklu if kullanımı olacaktır. Söz gelimi yukarıdaki windows uygulamamızda kullanıcının ComboBox, ListBox kontrolleri ile RadioButton kontrolünde seçebileceği bilginin enum tipi içerisinde karşılık geldiği değeri bulmaya çalışalım. Bu amaçla pekala aşağıdaki gibi bir metod yazabiliriz.</p>
<pre class="brush: cpp; title: ; notranslate">
private Sekil SecilenSekil(string sekilAdi)
{
Sekil skl=0;
switch (sekilAdi)
{
case &quot;Kare&quot;:
skl = Sekil.Kare;
break;
case &quot;Dortgen&quot;:
skl = Sekil.Dortgen;
break;
case &quot;Daire&quot;:
skl = Sekil.Daire;
break;
case &quot;Elips&quot;:
skl = Sekil.Elips;
break;
case &quot;Cizgi&quot;:
skl = Sekil.Cizgi;
break;
case &quot;ParalelKenar&quot;:
skl = Sekil.ParalelKenar;
break;
case &quot;Altigen&quot;:
skl = Sekil.Altigen;
break;
case &quot;Ucgen&quot;:
skl = Sekil.Ucgen;
break;
}
return skl;
}
</pre>
<p>Ancak Enum sınıfının tam bu amaç için kullanılabilecek çok daha etkili bir üyesi vardır. Bu kadar uzun bir kod yazmaktansa özellikle değer türlerinin vazgeçilmez üyelerinden birisi olan Parse metodunun, Enum sınıfı içerisine dahil edilmiş versiyonunu aşağıdaki gibi kullanabiliriz.<br />
<img src="http://www.csharpnedir.com/mimages/bsenyurt/mk179_9.gif" alt="mk179 9 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net "  title="mk179 9 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net " /></p>
<pre class="brush: cpp; title: ; notranslate">
private Sekil SecilenSekil(string sekilAdi)
{
return (Sekil)Enum.Parse(typeof(Sekil), sekilAdi, true);
}
</pre>
<p>Parse metodu sayesinde ikinci parametrede verilen string bilgi, ilk parametre ile belirlenen Enum tipi içerisinde aranır. Son parametre büyük küçük harf duyarlılığının olup olmayacağını belirlemek amacıyla kullanılan boolean bir değer almaktadır. Biz örneğimizde true değerini verdik. Eğer false değerini verseydik örneğin PARALELKENAR gibi bir bilgi için çalışma zamanında ArgumentException istisnasını alacaktık. Bunun nedeni elbetteki harf duyarlılığını kapatmış olmamız ve ParalelKenar ile PARALELKENAR bilgilerinin bu kritere göre eşit olmamasıdır.<br />
Parse metodu sayesinde kullanıcının seçtiği bilgilerin, ilgili enum sabiti içerisindeki karşılıklarını bulabilir ve sayısal değerlerini elde edebiliriz. Aslında bir enum sabiti içerisinde yer alan değerlerin farklı formatta karşılıkları vardır. Örneğin bu değerlerin sadece string karşılıkları değil sayısal karşılıklarıda vardır. İşte bu karşılıkları elde etmek amacıyla ToString metoduna bir takım parametreler verilir ki buda makalemizin 3ncü maddesinin konusudur.<br />
3. Enum sabitlerinin içeriğinin ToString metodu ile farklı biçimlerde elde edilmesi<br />
Bir enum sabiti içerisindeki değerleri ToString metodu yardımıyla farklı formatlarda elde edebiliriz. Bu amaçla aşağıdaki tabloda yer alan değerler kullanılır.<br />
Parametre Değeri İşlevi G veya g Enum sabiti içerisindeki ilgili değeri genel(General) formatta yazar. D veya d Enum sabiti içerisindeki ilgili değerin sayısal(Decimal) karşılığını yazar. X veya x Enum sabiti içerisindeki ilgili değerin Hexadecimal (16lı sayı sistemindeki) karşılığını yazar. F veya f FlagsAttribute’ unun kullanılıp kullanılmamasına göre ilgili enum sabiti değerinin string karşılığını yazar. Örneğin , bir oyunda oyuncuların aldıkları puan gereği oynayabilecekleri seviyleri Yetki isimli enum sabiti ile ele aldığımızı düşünelim.</p>
<pre class="brush: cpp; title: ; notranslate">

public enum Yetki
{
Caylak = 1
,Uzman = 2
,Profesyonel = 4
,Tecrubeli = 6 // Bu değer sonradan başımıza iş açabilir.
} Buna göre bu enum sabiti içerisindeki her hangibir değeri ToString metodunun farklı versiyonları ile ekrana yazdırmaya çalıştığımızda aşağıdaki sonuçları alırız.
static void Main(string[] args)
{
Yetki ytk;
// Tek bir enum değeri için ToString() çalışma şekilleri
ytk = Yetki.Caylak;
EnumInfo(ytk);
}

private static void EnumInfo(Yetki ytk)
{
Console.WriteLine(&quot;------------------------------------&quot;);
Console.WriteLine(&quot;Varsayılan : &quot; + ytk.ToString());
Console.WriteLine(&quot;General : &quot; + ytk.ToString(&quot;G&quot;));
Console.WriteLine(&quot;Flags : &quot; + ytk.ToString(&quot;F&quot;));
Console.WriteLine(&quot;Decimal : &quot; + ytk.ToString(&quot;D&quot;));
Console.WriteLine(&quot;Hexadecimal : &quot; + ytk.ToString(&quot;X&quot;));
}
</pre>
<p><img src="http://www.csharpnedir.com/mimages/bsenyurt/mk179_3.gif" alt="mk179 3 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net "  title="mk179 3 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net " /><br />
4. Veyalanmış içeriklerin kullanımı<br />
Bazı durumlarda enum sabitleri içerisindeki değerlerin | işareti ile veyalandığını görürüz. Örneğin CommandBehavior enum sabitini kullanırken SingleRow|CloseConnection ifadesi ile veya benzerleri ile çok sık karşılaşırız(kullanırız). Aynı durum kendi yazmış olduğumuz enum sabitleri içinde geçerlidir. Yetki enum sabitimizi göz önüne alırsak eğer, aşağıdaki gibi bir kullanım söz konusu olabilir. Dikkat ederseniz bit seviyesinde veya(OR) işlemi uygulanmaktadır.<br />
Yetki ytk = Yetki.Profesyonel | Yetki.Uzman; Burada ilginç olan bir durum vardır. O da Profesyonel ve Uzman değerlerinin sayısal toplamlarının 6 olmasıdır. 6 değeri dikkat ederseniz Yetki enum sabiti içerisinde yer alan Tecrubeli’ nin sayısal değerinede karşılık gelmektedir. Bu nedenlede EnumInfo metoduna bu tip bir parametre gönderildiğinde aşağıdaki ekran çıktısının elde edilmesi son derece doğaldır. Ancak bu tip bir kullanım tercih edilmemelidir. Yani veyalanmış enum sabiti değerlerinin, başka bir enum sabitine denk gelmesi istenen bir durum değildir.</p>
<p><img src="http://www.csharpnedir.com/mimages/bsenyurt/mk179_4.gif" alt="mk179 4 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net "  title="mk179 4 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net " /></p>
<p>Yetki isimli enum sabiti içerisinde yer alan sayısal değerlere bakıldığında, veyalanmış olarak mümkün olabilecek pek çok kombinasyon olacağı kesindir. Örneğin aşağıdaki tabloda olası bir kaç kombinasyon verilmektedir.<br />
Caylak | Uzman 3 Caylak | Profesyonel 5 Caylak | Tecrubeli 7 Uzman | Profesyonel 6 Uzman | Tecrubeli 8 Caylak | Uzman | Profesyonel 7 Caylak | Uzman | Tecrubeli 9 Caylak | Uzman | Profesyonel | Tecrubeli 13 Ancak burada dikkat edilmesi gereken önemli bir husus vardır. Bunun için, Enum sabiti içerisindeki kombinasyonların program tarafındaki sonuçlarına bakmamız gerekmektedir. Örneğin 3 ve 5 değerlerini veren kombinasyonlara bakalım.</p>
<pre class="brush: cpp; title: ; notranslate">
EnumInfo(Yetki.Profesyonel| Yetki.Uzman);
EnumInfo(Yetki.Caylak| Yetki.Profesyonel);
</pre>
<p><img src="http://www.csharpnedir.com/mimages/bsenyurt/mk179_5.gif" alt="mk179 5 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net "  title="mk179 5 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net " /><br />
Dikkat ederseniz ToString metodunun varsayılan ile G parametresi kullanılan versiyonları sayısal değerlerin toplamını geriye döndürmüştür. Sadece F parametresi kullanarak elde ettiğimiz sonuçlarda ilgili değerlerin string karşılıkları, aralarına virgül konularak elde edilebilmiştir. Eğer ToString() ve ToString(&#8220;G&#8221;) versiyonlarınında benzer şekilde davranmasını istersek enum sabitimiz üzerinde Flags niteliğini (attribute) uygulamamız gerekecektir.</p>
<pre class="brush: cpp; title: ; notranslate">[Flags]
public enum Yetki
{
Caylak = 1
,Uzman = 2
,Profesyonel = 4
,Tecrubeli = 6
}
</pre>
<p>Bu durumda aynı uygulamada aşağıdaki sonuçları alırız.<br />
<img src="http://www.csharpnedir.com/mimages/bsenyurt/mk179_6.gif" alt="mk179 6 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net "  title="mk179 6 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net " /><br />
Flags attribute’ u ile ilgili bu kısa bilgi ardından veyalanmış enum sabitleri için ele alacağımız bir diğer kritik noktaya gelelim. Özellikle enum sabiti içerisindeki çeşitli değerlerin birlikte veyalanarak kombinasyonlar oluşturulabildiğini gördük. Peki bu kombinasyonlar gerçektende doğru sayısal değerleri mi üretiyorlar? Örneğin bu maddenin başında Uzman | Profesyonel kombinasyonunun Tecrubeli’ nin sayısal değerini ürettiğini gördük ve bunun istenmeyen bir durum olacağını vurguladık. Nitekim veyalanmış ifadeler kullanılacaksa sayısal değerlerin farklı veyalanmış kombinasyonlarda çok daha garip sonuçlar üretmesi muhtemeldir. Bu durumu analiz edebilmek için örnek uygulamamızda aşağıdaki kod parçasında görülen kombinasyonları deneyelim.</p>
<pre class="brush: cpp; title: ; notranslate">

Console.WriteLine(&quot;\tCaylak&quot;);
EnumInfo(Yetki.Caylak);

Console.WriteLine(&quot;\tProfesyonel | Uzman&quot;);
EnumInfo(Yetki.Profesyonel | Yetki.Uzman);

Console.WriteLine(&quot;\tCaylak | Profesyonel&quot;);
EnumInfo(Yetki.Caylak | Yetki.Profesyonel);

Console.WriteLine(&quot;\tCaylak | Uzman&quot;);
EnumInfo(Yetki.Caylak | Yetki.Uzman);

Console.WriteLine(&quot;\tProfesyonel | Tecrubeli&quot;);
EnumInfo(Yetki.Profesyonel | Yetki.Tecrubeli);

Console.WriteLine(&quot;\tYetki.Caylak | Yetki.Uzman | Yetki.Tecrubeli&quot;);
EnumInfo(Yetki.Caylak | Yetki.Uzman | Yetki.Tecrubeli);

Console.WriteLine(&quot;\tYetki.Caylak | Yetki.Profesyonel | Yetki.Tecrubeli&quot;);
EnumInfo(Yetki.Caylak | Yetki.Profesyonel | Yetki.Tecrubeli);</pre>
<p>Bu durumda ekran çıktımız aşağıdaki gibi olacaktır.<br />
<img src="http://www.csharpnedir.com/mimages/bsenyurt/mk179_7.gif" alt="mk179 7 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net "  title="mk179 7 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net " /><br />
Gördüğünüz gibi oldukça ilginç sonuçlar elde ettik. Pek çok kombinasyonda ne toplam sayısal değerleri ne de ToString ve ToString(&#8220;G&#8221;) metodlarının sonuçları doğru olarak gözükmemektedir. O halde kombinasyonların doğru sonuçlar verebilmesini bir şekilde sağlamak gerekmektedir. Çoğunlukla bu durum için enum sabiti içerisindeki herhangibir değişkenin değerinin, kendisinden önce gelen sayısal değerlerin toplamından en azından bir fazla olması tercih edilir. Dolayısıyla enum sabitimizi aşağıdaki gibi değiştirmek yerinde olacaktır.</p>
<pre class="brush: cpp; title: ; notranslate">

[Flags]
public enum Yetki
{
Caylak = 1
,Uzman = 2
,Profesyonel = 4
,Tecrubeli = 8
} </pre>
<p>Programı tekrar çalıştırdığımızda aşağıdaki ekran görüntüsünde yer alan sonuçları alırız.<br />
<img src="http://www.csharpnedir.com/mimages/bsenyurt/mk179_8.gif" alt="mk179 8 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net "  title="mk179 8 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net " /><br />
Gördüğünüz gibi bu sefer elde ettiğimiz sonuçlar çok daha tutarlı ve doğrudur. Kombinasyonlar doğru sayısal karşılıkları üretmiş ve Flags attribute’ u sayesinde ToString() ve ToString(&#8220;G&#8221;) metodları geriye düzgün kombinasyonlar döndürmüştür. O halde enum sabitlerimiz içerisindeki değerlerin veyalanmış hallerine ihtiyacımız olucaksa, Flags niteliğini kullanmakta ve sayısal değerleri bir öncekilerin toplamının en az bir fazlası olacak şekilde belirlemekte fayda vardır.<br />
5. IsDefined metodu her zaman yeterli olmayabilir.<br />
IsDefined, her hangibir enum değişkeninin ilgili enum sabiti içerisinde var olup olmadığına dair bool değer döndüren bir özelliktir. Bazı durumlarda parametrik bir bilginin, herhangibir enum sabiti içerisinde var olup olmadığını tespit etmek isteyebiliriz. Bu amaçla kendi switch..case yada if..else yapılarımızı kurabileceğimiz gibi Enum sınıfına ait static IsDefined metodundan da faydalanabiliriz. Ancak IsDefined metodu her zaman için yeterli olmayacaktır. Neden yeterli olmayacağını daha iyi anlayabilmek için bir örnek üzerinden devam edelim. Parca isimli bir enum sabitimiz olduğunu göz önüne alalım.</p>
<pre class="brush: cpp; title: ; notranslate">

public enum Parca
{
Islemci=1
,Harddisk=2
,Ram=4
,EkranKarti=8
,SesKarti=16
} Deneme olması açısındanda console uygulaması içerisinde aşağıdaki kodları ele alalım.
Console.WriteLine(&quot;Islemci var mı ? &quot;+Enum.IsDefined(typeof(Parca),&quot;Islemci&quot;));
Console.WriteLine(&quot;ISLEMCI var mı ? &quot; + Enum.IsDefined(typeof(Parca), &quot;ISLEMCI&quot;));
Console.WriteLine(&quot;SESKarti var mı ? &quot; + Enum.IsDefined(typeof(Parca), &quot;SESKarti&quot;));
Console.WriteLine(&quot;Parca.SesKarti var mı ? &quot; + Enum.IsDefined(typeof(Parca), Parca.SesKarti));
Console.WriteLine(&quot;Parca.SesKarti|Parca.Ram|Parca. Islemci var mı ? &quot; + Enum.IsDefined(typeof(Parca),Parca.SesKarti| Parca.Ram| Parca.Islemci));
Console.WriteLine(&quot;1 var mı ? &quot; + Enum.IsDefined(typeof(Parca), 1));
Console.WriteLine(&quot;1|2 var mı ? &quot; + Enum.IsDefined(typeof(Parca), 3));
</pre>
<p>IsDefined metodu ilk parametre olarak kontrol işleminin yapılacağı Enum sabitinin tipini almaktadır. Bu amaçla typeof parametresi kullanılmıştır. Ikinci parametre ise object tipinden olup aranan bilgiyi temsil etmektedir. Uygulamayı çalıştırdığımızda aşağıdakine benzer bir ekran görüntüsü elde ederiz. Şimdi bu durumu analiz etmeye çalışalım.<br />
<img src="http://www.csharpnedir.com/mimages/bsenyurt/mk179_10.gif" alt="mk179 10 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net "  title="mk179 10 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net " /><br />
Kod satırlarımızın ilkinde Islemci isimli string bilgiyi kontrol ediyoruz. Islemci değeri, enum sabitimiz içerisinde gerçektende vardır. Dolayısıyla IsDefined metodu true değer döndürmüştür. Lakin burada case sensitive bir durum söz konusudur. Bu nedenle ISLEMCI ve SESKarti isimli bilgiler için IsDefined metodu false değerler döndürmektedir. 4ncü olarak Parca.SesKarti bilgisi IsDefined metodu ile kontrol edilmektedir. Çok doğaldırki Parca isimli enum sabitimiz içerisinde bu değer zaten vardır. Bu nedenle true değeri dönmüştür.<br />
5nci kontrolde bir kombinasyon kullanılmış ve SesKarti, Ram ve Islemci değerlerinin bir arada olup olmaması durumu ele alınmıştır. Her ne kadar bu değerler enum sabiti içerisinde yer alsada sonuç false değer döndürmüştür. Öyleyse buna bir çözüm üretilmesi gerekmektedir. Çözüm üzerinde tartışmadan önce 6ncı ve 7nci çağırılarada göz atmakta fayda var. 6ncı çağırıda 1 sayısal değerini kontrol ediyoruz. Bu değerin karşılığı Islemci olduğu için IsDefined metodu geriye true döndürmektedir. Oysaki aynı durum 7nci kontrolde söz konusu değildir. Enum sabiti içerisinde açıkça belirtilmiş 3 sayısal değerine sahip bir değişken olmamasına rağmen Islemci ve HardDisk değişkenlerinin toplamı 3’ tür. Dolayısıyla enum sabiti içerisinde 3’ e karşılık gelen bir kombinasyon vardır ve fakat IsDefined metodu bunu analiz edememektedir. Bu tip durumlarda enum sabiti içerisine aşağıdaki gibi yeni bir değişken daha eklenir.</p>
<pre class="brush: cpp; title: ; notranslate">

public enum Parca
{
Islemci=1
,Harddisk=2
,Ram=4
,EkranKarti=8
,SesKarti=16
,Hepsi=(Islemci|Harddisk|Ram|EkranKarti|SesKarti)
} Ne yazıkki bu değişkenin eklenmesi IsDefined metodunun çalışma şeklini etkilemez. Bu yüzden kendi kontrol metodunu yazmamız gerekmektedir. Bu amaçla aşağıdakine benzer bir metod geliştirilebilir.
static void Main(string[] args)
{
Console.WriteLine(&quot;Parca.SesKarti var mı ? &quot; + VarMi(Parca.SesKarti));
Console.WriteLine(&quot;Parca.SesKarti|Parca.Ram|Parca. Islemci var mı ? &quot; +VarMi(Parca.SesKarti | Parca.Ram | Parca.Islemci));
}

static bool VarMi(Parca prc)
{
if((prc!=0)&amp;&amp;((Parca.Hepsi &amp; prc)==prc))
return true;
else
return false;
}
</pre>
<p>Bu metod her ne kadar IsDefined metodunda olduğu gibi object tipinden parametreler ile çalışmasada içerisinde yapıtığı kontroller sayesinde çeşitli kombinasyonlara karşı doğru tepkiler verebilecek şekilde tasarlanmıştır. En önemli kısım VarMi metodu içerisindeki if koşuludur. If koşulu içerisinde Parca.Hepsi ile metoda parametre olarak gelen Parca enum sabitinin ilgili değeri bit seviyesinde and (ve) işlemine tabi tutulmaktadır. Bu işlemin sonucunun yine metoda gelen parametre değerine eşit olması halinde true değeri döndürülmektedir. Örneğin Parca.SesKarti | Parca.Ram | Parca.Islemci kombinasyonunu göz önüne alalım. Burada bitsel seviyede veya işlemi gerçekleşmektedir ve sonuçta üretilen çıktı aşağıdaki gibi olacaktır.<br />
Parca.SesKarti 16 0 0 0 1 0 0 0 0 Parca.Ram 4 0 0 0 0 0 1 0 0 Parca.Islemci 1 0 0 0 0 0 0 0 1<br />
Bit seviyesinde | islemi. (Veya)<br />
Parca.SesKarti | Parca.Ram | Parca.Islemci 21 0 0 0 1 0 1 0 1 Metod içerisinde ise gelen bu değer Parca.Hepsi ile bitsel ve işlemine tabi tutulmaktadır.<br />
Parca.SesKarti | Parca.Ram | Parca.Islemci 21 0 0 0 1 0 1 0 1 Parca.Hepsi 31 0 0 0 1 1 1 1 1<br />
Bit seviyesinde &amp; islemi. (Ve)<br />
Parca.SesKarti | Parca.Ram | Parca.Islemci 21 0 0 0 1 0 1 0 1 Elde edilen sonuca bakıldığında tekrar 21 değerini elde ettiğimizi bir başka deyişle metoda parametre olarak gönderilen enum değerinin, Parca enum sabiti içerisinde yer alıp almadığını tespit etmiş oluyoruz. Her ne kadar kendi yazdığımız VarMi metodu parametre olarak IsDefined’ da olduğu gibi object tipiyle çalışmıyorsada istersek sayısal değerlerede tepki verebilecek hale getirebiliriz. Tek yapmamız gereken VarMi metodunu aşağıdaki gibi aşırı yüklemektir (overloading).</p>
<pre class="brush: cpp; title: ; notranslate">

static bool VarMi(int prc)
{
if ((prc != 0) &amp;&amp; (((int)Parca.Hepsi &amp; prc) == prc))
return true;
else
return false;
} Dikkat ederseniz bu sefer parametremiz integer tipindendir. Elbette kontrol işlemi sırasında Parca.Hepsi enum değerinin sayısal karşılığını kullanmak zorundayız. Bu nedenle int cast operatörünü kullanıyoruz. Sonuçları inceleyebilmek için aşağıdaki test kodlarını ele alabiliriz.
Console.WriteLine(&quot;Parca.SesKarti var mı ? &quot; + VarMi(1));
Console.WriteLine(&quot;Parca.SesKarti|Parca.Ram|Parca. Islemci var mı ? &quot; + VarMi(21));
Console.WriteLine(&quot;44 var mı ? &quot; + VarMi(44)); Uygulamamızı bu haliyle çalıştırdığımızda aşağıdaki sonuçları elde ederiz.
</pre>
<p><img src="http://www.csharpnedir.com/mimages/bsenyurt/mk179_11.gif" alt="mk179 11 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net "  title="mk179 11 C# Temelleri : Enum Sabitinin Bilinmeyen Yönleri dot net c sharp  net " /><br />
Dikkat ederseniz 44 değerinin enum sabiti içerisinde bir karşılığı olmadığı için metodumuz başarılı bir şekilde false değerini döndürmektedir. Diğer taraftan Parca.SesKarti | Parca.Ram | Parca.Islemci kombinasyonuda enum sabiti içerisinde yer aldığı için metodumuz true değerini geriye döndürmektedir.<br />
Bu makalemizde enum sabitlerini biraz daha derinlemesine incelemeye çalıştık. Var olan enum sabitlerinin içeriğinin çalışma zamanından nasıl elde edilebileceğini, her hangibir string bilginin bir enum sabiti içerisindeki karşılığının Parse metodu ile nasıl bulunabileceğini gördük. Bunların dışında, enum sabitlerinin içeriklerinin string olarak farklı formatlarda yazılmasını, Flag niteliğinin bu işteki yerine baktık. Son olarakta veyalanmış (bitsel or işlemine tabi tutulmuş enum değerlerinin) içeriklerin kullanımını ve dikkat edilmesi gereken noktaları inceledik. Böylece geldik bir makalemizin daha sonuna. Bir sonraki makalemizde görüşünceye dek hepinize mutlu günler dilerim.</p>
<p><em>Yazar : Burak Selim Şenyurt</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/c-temelleri-enum-sabitinin-bilinmeyen-yonleri/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

