<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Serhat TAŞ</title>
    <description>C# , ASP.NET , ADO.NET , Microsoft , SQL</description>
    <link>http://www.serhattas.net/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.4.5.0</generator>
    <language>tr-TR</language>
    <blogChannel:blogRoll>http://www.serhattas.net/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.blogengine.gen.tr/syndication.axd</blogChannel:blink>
    <dc:creator>Serhat Taş</dc:creator>
    <dc:title>Serhat TAŞ</dc:title>
    <media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Technology/Podcasting</media:category><itunes:explicit>yes</itunes:explicit><itunes:subtitle>C# , ASP.NET , ADO.NET , Microsoft , SQL</itunes:subtitle><itunes:category text="Technology"><itunes:category text="Podcasting" /></itunes:category><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/serhat" type="application/rss+xml" /><item>
      <title>C# 3.0 - Extension Methods (Genişletme Metotları)</title>
      <description>&lt;p&gt;
Merhabalar herkese;&lt;br /&gt;
Bu makalemizde kısaca C# 3.0 ile gelen LINQ,Anoymous Type,Lambda Expression,Partial Metotlar gibi bir&amp;ccedil;ok yenilikten biri olan Extension Methods yani Genişletme metotları hakkında birşeyler yapacağız.Extension metotlar ile Common Language Runtime (CLR) &amp;uuml;zerindeki tiplere (int,string vs) veya kendi yazmış olduğumuz tiplere yeni metotlar eklememizi sağlamaktadır.En basitinden bir &amp;ouml;rnek vermek gerekirse string tipinin i&amp;ccedil;inde bir metot olsa idi ve parametre olarak almış olduğu değeri int tipine return etse idi ne kadar g&amp;uuml;zel olurdu değil mi ? :). &lt;br /&gt;
Genişletme metotları sayesinde LINQ&amp;nbsp; mimarisi ile gelen bir&amp;ccedil;ok metotlardan bazıları olan Reverse,Select,Sum,Take gibi metotlar sayesinde koleksiyonlarımızı,dizilerimizi yani kısacası IEnumerable&amp;lt;T&amp;gt;&amp;#39;yi uygulayan heryerden kullanabiliyoruz.Ş&amp;ouml;yle incelemek gerekirse,
&lt;/p&gt;
&lt;p&gt;
&lt;div class="code"&gt;
[code:c#] &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;class&lt;/span&gt; Ogrenci&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; OgrenciAdSoyad { get; set; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Numumara { get; set; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; Ogrenci(&lt;span class="kwrd"&gt;string&lt;/span&gt; adSoyad, &lt;span class="kwrd"&gt;int&lt;/span&gt; numara)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OgrenciAdSoyad = adSoyad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Numumara = numara;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ToString()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; OgrenciAdSoyad + &amp;quot;-&amp;quot; + Numumara;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;Ogrenci&amp;gt; ogrenciler = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;Ogrenci&amp;gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ogrenciler.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; Ogrenci(&amp;quot;Serhat Taş&amp;quot;, 114));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ogrenciler.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; Ogrenci(&amp;quot;Yiğit Taş&amp;quot;, 323));&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
[/code]&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
Yukarıda Ogrenci&amp;nbsp; diye bir tip tanımlanıp daha sonra tanımlanmış olan Ogrenci tipinden bir generic List&amp;lt;T&amp;gt; tanımlanıyor.Ve tanımlamış olduğumuz generic koleksiyon &amp;uuml;zerindeki &amp;uuml;yelere baktığımızda ise bir&amp;ccedil;ok extension metodun gelmiş olduğunu g&amp;ouml;r&amp;uuml;yorum.&lt;br /&gt;
&lt;br /&gt;
&lt;img src="/pics/MakaleResim/mk_36_2.jpg" alt="" /&gt;
&lt;/p&gt;
&lt;p&gt;
Peki nereden geldi bu kadar metot ? Baktığımızda bir koleksiyonda olmaması gereken metotlarmış gibi g&amp;ouml;z&amp;uuml;k&amp;uuml;yor olabilir.Burada g&amp;ouml;z&amp;uuml;ken metotlar aslında IEnumerable&amp;lt;T&amp;gt; &amp;uuml;zerinden gelen metotlardır.Yani a&amp;ccedil;ıkcası birer Extension(genişletme) metotlardır.B&amp;ouml;ylece buradan gelen metotların artık ogrenciler nesnesi &amp;uuml;zerinden gelmediğini anlayabiliriz.T&amp;uuml;m bunlar System.Linq.Enumerable isimli static bir classın &amp;uuml;yeleri olmaktadır.Bu sebepten dolayı Enumerable&amp;nbsp; sınıfının programımızda erişebildiği heryerde bu genişletme metotlarını kullanarak işlemler yapabiliriz.&lt;br /&gt;
Array classı&amp;#39;da Enumerable classına erişebildiğinden basit bir dizi tanımladığımızda bile dizimizin &amp;uuml;yesi olmayan genişletme metodu olarak adlandırılan static Enumerable classı i&amp;ccedil;erisinde tanımlanmış bir&amp;ccedil;ok metodu kullanabilir duruma gelebiliriz.&amp;Uuml;yelere baktığımızda genişletme metotları olduğunu anlayabiliyoruz.Zaten metot simgeleri farklı olduğu gibi a&amp;ccedil;ıklama olarak da bunun bir extension &amp;uuml;ye olduğunu s&amp;ouml;yl&amp;uuml;yor bizlere. 
&lt;/p&gt;
&lt;p&gt;
&lt;img src="/pics/MakaleResim/mk_36_3.jpg" alt="" /&gt;
&lt;/p&gt;
&lt;p&gt;
Ve aslında da LINQ dediğimiz mimarinin bu System.Linq.Enumerable static classının i&amp;ccedil;erisinde tanımlanmış olan metotları kullanıyor olduğunu s&amp;ouml;yleyebiliriz :) .Eğer kendi Extension metotlarımızı yazacak isek uygulamamız gereken &amp;ouml;nemli kurallar bulunmaktadır.
&lt;/p&gt;
&lt;p&gt;
1-Genişletme metotlarımız mutlaka static bir Class i&amp;ccedil;erisinde olmalıdır&lt;br /&gt;
2-Classların i&amp;ccedil;erisindeki metotlarımız static olarak tanımlanmalıdır&lt;br /&gt;
3-Ve son olarakda yazdığımız static metotların ilk parametresi o metodun hangi tip &amp;uuml;zerinden &amp;ccedil;ağırıldığında gelmesini istiyor isek onu this anahtar kelimesi ile belirtmeliyiz.
&lt;/p&gt;
&lt;p&gt;
Basit olarak mantığını anlamak i&amp;ccedil;in bir &amp;ouml;rnek yapalım.Mesela bir metodumuz olsun string bir tip &amp;uuml;zerinden &amp;ccedil;ağırıldığında &amp;ccedil;ağırıldığı değerin t&amp;uuml;m harflerini b&amp;uuml;y&amp;uuml;k yapsın.ToUpper() bu işi g&amp;ouml;r&amp;uuml;yor fakat biz kendimiz yaparak yine bu metodu kullanalım ama yazdığımız metot kendi extension metodumuz olsun.Bakalım nasıl oluyormuş :)
&lt;/p&gt;
&lt;p&gt;
&lt;div class="code"&gt;
[code:c#] &lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;namespace&lt;/span&gt; GenisletmeMetotlari&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;string&lt;/span&gt; isim = &amp;quot;serhat&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(isim.MetiniBuyut());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;//Extension metodumun bulunduğu static classım.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ExtensionMetotlar&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;//string bir tip &amp;uuml;zerinden artık bu metodumuz &amp;ccedil;ağırılarak hangi değer &amp;uuml;zerinde ise onu b&amp;uuml;y&amp;uuml;k harfe &amp;ccedil;evirecektir&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; MetiniBuyut(&lt;span class="kwrd"&gt;this&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; s)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; s.ToUpper();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
} &lt;br /&gt;
[/code]&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
Yukarıdaki &amp;ouml;rneğe bakacak olursak kurallarda denildiği gibi eğer bir static metot yazılacak ise &amp;ouml;ncelikli olarak static bir class tanımlanmalıdır.Ve&amp;nbsp; biz ExtensionMetotlar adında tanımladık.Daha sonra amacımız string bir tip &amp;uuml;zerinden&amp;nbsp; kendi yazdığımız bir metodu &amp;ccedil;alıştırmak i&amp;ccedil;in ise yine static olarak tanımladık fakat bu sefer ilk parametresini this anahtar kelimesi ile harici olarak &amp;ccedil;alıştırmak istediğimiz tipin adını yazdık.Biz bu metodumuzda metinsel bir işlem yapacağımızdan this string dediğimizde artık bu metodumuzu kullanabiliyor olacağız.Extension metotlara giriş yaptığımızda nasıl Enumerable classı i&amp;ccedil;erisinde tanımlanmış olan genişletme metotlarına ulaşıyor isek bizimde programımızın i&amp;ccedil;erisinde ulaştığımızı g&amp;ouml;r&amp;uuml;yoruz.Intelisense bize destek vermektedir bu konuda ve listelenen bir metodun hangisinin ger&amp;ccedil;ek tipin hangisi daha sonradan bu tipe genişletilerek eklendiğini belli etmektedir.&lt;br /&gt;
&lt;br /&gt;
&lt;img src="/pics/MakaleResim/mk_36_4.jpg" alt="" /&gt;&lt;br /&gt;
&amp;Ccedil;alıştırdığımızda da istediğimiz sonucu elde etmiş oluyoruz.Bakın string tipine b&amp;ouml;ylece en basitinden bir metot ekledik :)&lt;br /&gt;
&lt;br /&gt;
&lt;img src="/pics/MakaleResim/mk_36_5.jpg" alt="" /&gt;
&lt;/p&gt;
&lt;p&gt;
Ve diğer &amp;ouml;nemli bir konu.Bizler kendi yazmış olduğumuz Extension metotlara Overloading&amp;nbsp; yani aşırı y&amp;uuml;klenmiş&amp;nbsp; hale getirebiliyoruz.Extension metotların bulunduğu classın g&amp;ouml;r&amp;uuml;n&amp;uuml;m&amp;uuml; aşağıdaki gibidir.
&lt;/p&gt;
&lt;p&gt;
&lt;div class="code"&gt;
[code:c#]&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;//Extension metodumun bulunduğu static classım.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ExtensionMetotlar&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;//string bir tip &amp;uuml;zerinden artık bu metodumuz &amp;ccedil;ağırılarak hangi değer &amp;uuml;zerinde ise onu b&amp;uuml;y&amp;uuml;k harfe &amp;ccedil;evirecektir&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; MetiniBuyut(&lt;span class="kwrd"&gt;this&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; s)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; s.ToUpper();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;//tek parametreli int extension metot&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; SayiIslem(&lt;span class="kwrd"&gt;this&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; s)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; s * 2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;//iki parametreli int extension metot&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; SayiIslem(&lt;span class="kwrd"&gt;this&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; s, &lt;span class="kwrd"&gt;int&lt;/span&gt; s1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; s * s1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
[/code]&lt;/div&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Metotları aşırı y&amp;uuml;kledikten sonra Main&amp;#39;e gittiğimizde aşırı y&amp;uuml;klenme işinin başarılı bir şekilde &amp;ccedil;alıştığını g&amp;ouml;r&amp;uuml;yoruz.Tanımlarken parametre sayıları ve tipleri &amp;ouml;nemlidir.Bunlarada bildiğimiz gibi metot imzası (Method Signature) denilmektedir.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="/pics/MakaleResim/mk_36_7.jpg" alt="" /&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Ve diğer g&amp;uuml;zel bir &amp;ouml;zelliktende bahsedelim kısaca :) .Farzedelimki 10 tane tipiniz var (class ) hepsi bir interface&amp;#39;i aray&amp;uuml;z uygulamış.Ve siz t&amp;uuml;m bu 10 class&amp;#39;dan oluşacak nesnelerede ayı ayrı birer metot yazmak yerine tek bir metotla işleminizi yapmak istiyorsunuz.Nasıl olabilir ? .T&amp;uuml;m bu 10 sınıfında uygulamış olduğu interface&amp;#39;e genişletme metodu eklesek nasıl olurdu ki acaba ? . Bence &amp;ccedil;ok g&amp;uuml;zel olurdu :) .Aşağıdaki gibi iki tane class ve bir tanede bu class&amp;#39;ların uygulamış olduğu interface&amp;#39;in olduğunu varsayıyoruz.
&lt;/p&gt;
&lt;p&gt;
&lt;div class="code"&gt;
[code:c#]&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;interface&lt;/span&gt; OrnekArayuz&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;void&lt;/span&gt; InterfaceMetot();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;class&lt;/span&gt; Sinif1 : OrnekArayuz&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; InterfaceMetot()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;Sinif1 isimli metot&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;class&lt;/span&gt; Sinif2 : OrnekArayuz&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; InterfaceMetot()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;Sınıf2 isimli metot&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
[/code]&lt;/div&gt;&amp;nbsp;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Ve şimdi Main metodumuza gidelim bakalım nesnelerimiz ne alemde.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="/pics/MakaleResim/mk_36_8.jpg" alt="" /&gt;
&lt;/p&gt;
&lt;p&gt;
G&amp;ouml;r&amp;uuml;ld&amp;uuml;ğ&amp;uuml; gibi iki class&amp;#39;ın ortak uyguladığı bir aray&amp;uuml;zdeki metodu kullanarak nesnemiz &amp;uuml;zerinden interface&amp;#39;deki metot yapısına erişebiliyoruz.&amp;Ccedil;alıştırdığımızda aşağıdaki g&amp;ouml;r&amp;uuml;nt&amp;uuml; oluşacaktır tahmin ettiğiniz gibi.&lt;br /&gt;
&lt;img src="/pics/MakaleResim/mk_36_9.jpg" alt="" /&gt;
&lt;/p&gt;
&lt;p&gt;
Bu sonu&amp;ccedil; zaten beklenen birşeydi.Peki &amp;ouml;rneğimizi kurkularken bu class&amp;#39;ların 1-2 tane değilde 10 tane olduğunu ve bu t&amp;uuml;m class&amp;#39;larımıza Extension &amp;ouml;zelliğini kullanarak yeni bir metot eklemekti amacımız.Eğer bir Extension Metodu Interface&amp;#39;e uygular iseniz o interface&amp;#39;den t&amp;uuml;reyen t&amp;uuml;m tiplerimizden extension metoda erişebiliriz arkadaşlar.Biz burada kendi yazmış olduğumuz bir aray&amp;uuml;ze extension metot ekleyeceğiz.NET Framework&amp;#39;in i&amp;ccedil;erisinde tanımlanmış olan interface&amp;#39;lere de genişletme metotlarını ekliyerek olduk&amp;ccedil;a kolay kodlanabilen uygulamalar yazabiliriz.Bu işlemi yapabilmek i&amp;ccedil;in yukarıdaki Extension metot tanımlama kurallarını hatırlayalım.Metodumuz static olmalı,ilk parametresi uygulayacağımız tipin adını vermeliyiz ve bu metot bir static class i&amp;ccedil;ersinde olmalı idi.Peki yukarıdaki class&amp;#39;ların yanına aşağıdaki class&amp;#39;ımızda ekleyelim.
&lt;/p&gt;
&lt;p&gt;
&lt;div class="code"&gt;
[code:c#]&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; InterfaceExtensionEkle&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ExtensionMetot(&lt;span class="kwrd"&gt;this&lt;/span&gt; OrnekArayuz o)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;OrnekAray&amp;uuml;z isimli &lt;span class="kwrd"&gt;interface&lt;/span&gt;&amp;#39;e eklenen extension metot&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
[/code]&lt;/div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Burada Extension metodumuzun ilk parametresine bakacak olursak demiştik ki bu metodu eklemek istediğimiz tipin adını yazarız.Bizde buraya bir interface tip adını verdiğimizden dolayı artık programımızın i&amp;ccedil;erisinde bu interface&amp;#39;i uygulamış t&amp;uuml;m class&amp;#39;lardan&amp;nbsp; ExtensionMetot isimli tanımlamış olduğumuz metoda erişebileceğiz.Ekledikten sonraki tekrar Main metoduna gidelim bakalım neler olmuş. &lt;br /&gt;
&lt;img src="/pics/MakaleResim/mk_36_10.jpg" alt="" /&gt;
&lt;/p&gt;
&lt;p&gt;
G&amp;ouml;r&amp;uuml;ld&amp;uuml;ğ&amp;uuml; gibi artık istediğimiz olmuştur.T&amp;uuml;m class&amp;#39;lara gidip istediğimiz metodu yazmak yerine bu class&amp;#39;ların uyguladığı bir interface&amp;#39;e extension metot eklediğimizden dolayı bu aray&amp;uuml;z&amp;uuml; uygulamış t&amp;uuml;m nesnelerimiz &amp;uuml;zerinden erişebiliyoruz.Intelisense yukarıda dediğimiz gibi bunun bir genişletme metodu olduğunu belli ediyor zaten. Aşağıdaki gibi iki nesnemiz &amp;uuml;zerinden Extension metodları &amp;ccedil;ağırır isek aşağıdaki g&amp;ouml;r&amp;uuml;n&amp;uuml;m&amp;uuml; elde edebiliriz.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="/pics/MakaleResim/mk_36_12.jpg" alt="" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="/pics/MakaleResim/mk_36_11.jpg" alt="" /&gt;&lt;br /&gt;
&lt;br /&gt;
Kendi class&amp;#39;larımıza ,interface&amp;#39;lerimize ve framework&amp;#39;deki tipe extension metot işlemini ger&amp;ccedil;ekleştirdik.Ve dedik ki .NET Framework i&amp;ccedil;indeki inteface&amp;#39;lerede uygulanabildiğini s&amp;ouml;yledik.Peki birde ona bakalım&amp;nbsp; , aslında diğerlerinden hi&amp;ccedil; bir farkı yok :). Amacımız mantığını anlamak olduğundan IEnumerable aray&amp;uuml;z&amp;uuml; bu &amp;ouml;rnek i&amp;ccedil;in &amp;ccedil;ok g&amp;uuml;zel.&amp;Ouml;rneğimizin kurgusu ş&amp;ouml;yle olsun.Bir extension metot yazalım ve IEnumerable&amp;lt;int&amp;gt; tipinden t&amp;uuml;reyen t&amp;uuml;m generic koleksiyonlar(Stack,List vb.) kullanabilsin.Ve extension metotda olması gereken kurallara g&amp;ouml;re aşağıda oluşturuyorum.
&lt;/p&gt;
&lt;p&gt;
&lt;div class="code"&gt;
[code:c#]&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; InterfaceExtensionEkle&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; IEnumerable&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; HariciMetot2(&lt;span class="kwrd"&gt;this&lt;/span&gt; IEnumerable&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; gelen)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; liste = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i &lt;span class="kwrd"&gt;in&lt;/span&gt; gelen)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (i % 2 == 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; liste.Add(i);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; liste;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
[/code]&lt;/div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Burada geri d&amp;ouml;n&amp;uuml;ş tipi IEnumerable&amp;lt;int&amp;gt; olan adı HariciMetot2 ve ilk parametresindede bunun bir extension metot olacağından hangi tip &amp;uuml;zerinden erişmek istiyor isem onu belirtiyorum.Ben burada IEnumerable&amp;lt;int&amp;gt; dediğimden .NET Framework&amp;#39;deki&amp;nbsp; IEnumerable&amp;lt;int&amp;gt; tipindeki t&amp;uuml;m tiplerimden bu metoduma ulaşabileceğim.Ve metodun amacıda i&amp;ccedil;erisinde oluşturğum int tipinden olan Generic List&amp;#39;ime&amp;nbsp; hangi IEnumerable&amp;lt;int&amp;gt;&amp;#39;i uygulamış tip &amp;uuml;zerinden &amp;ccedil;ağırılır ise &amp;ccedil;ağırıldığı koleksiyonun i&amp;ccedil;indeki &amp;uuml;yelere bakarak &amp;ccedil;ift olan sayıları bulup daha sonra bunu geri d&amp;ouml;nd&amp;uuml;r&amp;uuml;yorum.B&amp;ouml;yle basit bir metot.Peki şimdi programımızda kullanalım bakalım nasıl &amp;ccedil;alışıyor.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="/pics/MakaleResim/mk_36_14.jpg" alt="" /&gt;&lt;br /&gt;
G&amp;ouml;r&amp;uuml;ld&amp;uuml;ğ&amp;uuml; gibi int tipinden generic bir List koleksiyonu oluşturmuşum ve i&amp;ccedil;erisinde 1&amp;#39;den 10&amp;#39;a kadar değerler vermişim.Daha sonra benim amacım &amp;ccedil;ift sayıları bulmak olduğundan IEnumerable&amp;lt;int&amp;gt; tipinden bir nesneme IEnumerable&amp;lt;int&amp;gt;&amp;#39;i uygulamış bir koleksiyon nesnesi &amp;uuml;zerinden &amp;ccedil;ift sayıları bulan bir extensin metoda erişmeye &amp;ccedil;alışıyorum.Ve HariciMetot2 adında bir metotun g&amp;ouml;z&amp;uuml;kt&amp;uuml;ğ&amp;uuml;n&amp;uuml; g&amp;ouml;r&amp;uuml;yorum.Genişletme metodumun uygulanacağı tip IEnumerable&amp;lt;int&amp;gt; olduğundan generic List&amp;#39;imde bu tipten yani IEnumerable&amp;lt;int&amp;gt;&amp;#39;den etkilendiğinden sayilar adındaki diğer t&amp;uuml;m extension&amp;#39;lara erişebildiğim gibi kendi yazmış olduğum genişletme metoduna erişmiş durumdayım.Bu metot sayilar nesnesindeki sayıların i&amp;ccedil;erisindeki &amp;ccedil;ift sayıları bularak &amp;Ccedil;iftSayilar adındaki nesneme aktaracaktır.Daha sonra main&amp;#39;e giderek yazmış olduğum metodu kullanıp &amp;ccedil;ift sayıları ekrana başarılı birşekilde yazdırabiliyorum.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="code"&gt;
[code:c#]&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; sayilar = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IEnumerable&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; ciftSayilar = sayilar.HariciMetot2();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;foreach&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; i &lt;span class="kwrd"&gt;in&lt;/span&gt; ciftSayilar)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(i);&lt;br /&gt;
[/code]&lt;/div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;br /&gt;
Ve sonuca baktığımda istediğimizin olduğunu g&amp;ouml;rebiliyoruz.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="/pics/MakaleResim/mk_36_15.jpg" alt="" /&gt;&lt;br /&gt;
Bu şekilde interface&amp;#39;lerede genişletme metotları yazarak bir&amp;ccedil;ok işi daha kolay hale getirebiliyoruz :)
&lt;/p&gt;
&lt;p&gt;
Anlattıklarımı kısaca toparlar isek biz Class&amp;#39;lara ve Interface&amp;#39;lere Extension metot ekledik.Fakat Struct(Yapı)&amp;#39;lara da genişletme metotları yazabiliriz.Genişletme metotlarımızın aşırı y&amp;uuml;klenmiş hallerini yazabir. Genişletme metotları hangi tipe uygulanacak ise ilk parametresinde this anahtar kelimesi ile bildirilmedilir .Ve son olarak da genişletme metotları static bir class i&amp;ccedil;erisinde static anahtar kelimesi ile kendiside işaretlenmelidir diye &amp;ouml;zetleyebiliriz. 
&lt;/p&gt;
&lt;p&gt;
Bu yazımda kısaca C# 3.0 ile gelen Extension Metotlara deyinmek istemiştim.Faydalı olması dileğiyle iyi &amp;ccedil;alışmalar herkese :)
&lt;/p&gt;
&lt;p&gt;
Serhat TAŞ
&lt;/p&gt;
&lt;p&gt;
serhat@serhattas.net 
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/serhat/~4/Cbc_bUQk9NE" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/serhat/~3/Cbc_bUQk9NE/post.aspx</link>
      <author>serhattas1989.nospam@nospam.gmail.com (Serhat)</author>
      <comments>http://www.serhattas.net/post/2009/05/18/C-30-Extension-Methods-(Genisletme-Metotlarc4b1).aspx#comment</comments>
      <guid isPermaLink="false">http://www.serhattas.net/post.aspx?id=d6cc31e9-0820-4c51-83cd-94993d907f0b</guid>
      <pubDate>Mon, 18 May 2009 13:11:00 +0300</pubDate>
      <category>C#</category>
      <dc:publisher>Serhat</dc:publisher>
      <pingback:server>http://www.serhattas.net/pingback.axd</pingback:server>
      <pingback:target>http://www.serhattas.net/post.aspx?id=d6cc31e9-0820-4c51-83cd-94993d907f0b</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.serhattas.net/trackback.axd?id=d6cc31e9-0820-4c51-83cd-94993d907f0b</trackback:ping>
      <wfw:comment>http://www.serhattas.net/post/2009/05/18/C-30-Extension-Methods-(Genisletme-Metotlarc4b1).aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.serhattas.net/syndication.axd?post=d6cc31e9-0820-4c51-83cd-94993d907f0b</wfw:commentRss>
    <feedburner:origLink>http://www.serhattas.net/post.aspx?id=d6cc31e9-0820-4c51-83cd-94993d907f0b</feedburner:origLink></item>
    <item>
      <title>nedirtv?com - Mayıs Ayı Webinerleri</title>
      <description>&lt;div style="text-align: center"&gt;
&lt;img src="http://www.nedirtv.com/images/haberler/logo_nedirtv_webinerleri.gif" border="0" alt="" /&gt;
&lt;/div&gt;
&lt;div style="text-align: center"&gt;
&lt;div align="left"&gt;
&lt;strong&gt;nedirtv?com webinerleri t&amp;uuml;m hızıyla devam ediyor. Bu ay da ASP.NET
MVC, WCF, WF, SQL Server Integration Services ve XNA Game Studio gibi
konularda altı farklı webinerle karşınızdayız.&lt;/strong&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;p align="left"&gt;
Mayıs ayında ger&amp;ccedil;ekleştireceğimiz webinerlerle ilgili bilgileri aşağıda bulabilirsiniz.
&lt;/p&gt;
&lt;p align="left"&gt;
Webinerlere
katılmak i&amp;ccedil;in etkinlik zamanında belirtilen sayfaya giriş yapmanız
yeterlidir. Eğer bilgisayarınızdan Windows Live Meeting&amp;#39;i kullanarak
ilk defa bir webinere katılacaksanız, etkinlik vaktinden 5 dakika kadar
&amp;ouml;nce sayfaya giriş yapmanız ve bilgisayarınıza k&amp;uuml;&amp;ccedil;&amp;uuml;k bir kurulum
yapmanız yeterli olacaktır.
&lt;/p&gt;
&lt;p align="left"&gt;
Konu: &lt;strong&gt;SQL Server Integration Services(SSIS)&lt;/strong&gt;   &lt;br /&gt;
Konuşmacı: Burak BATUR   &lt;br /&gt;
Zaman: 12 Mayıs 2009 Salı 21:00-22:00   &lt;br /&gt;
Adres: &lt;a href="https://www.livemeeting.com/cc/mvp/join?id=G7WZ27&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/mvp/join?id=G7WZ27&amp;amp;role=attend&lt;/a&gt;   &lt;br /&gt;
&lt;br /&gt;
Konu: &lt;strong&gt;ASP.NET MVC - URL Routing&lt;/strong&gt;   &lt;br /&gt;
Konuşmacı: Uğur UMUTLUOĞLU   &lt;br /&gt;
Zaman: 18 Mayıs 2009 Pazartesi 21:00-22:00   &lt;br /&gt;
Adres: &lt;a href="https://www.livemeeting.com/cc/mvp/join?id=NSWTM3&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/mvp/join?id=NSWTM3&amp;amp;role=attend&lt;/a&gt;   &lt;br /&gt;
&lt;br /&gt;
Konu: &lt;strong&gt;WCF 4.0 ve WF 4.0&lt;/strong&gt;   &lt;br /&gt;
Konuşmacı: Burak Selim ŞENYURT   &lt;br /&gt;
Zaman: 19 Mayıs 2009 Salı 21:00-22:00   &lt;br /&gt;
Adres: &lt;a href="https://www.livemeeting.com/cc/mvp/join?id=N5PFDH&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/mvp/join?id=N5PFDH&amp;amp;role=attend&lt;/a&gt;   &lt;br /&gt;
&lt;br /&gt;
Konu: &lt;strong&gt;WCF ve TCP Hosting&lt;/strong&gt;   &lt;br /&gt;
Konuşmacı: Onur ŞİMŞEK   &lt;br /&gt;
Zaman: 20 Mayıs 2009 &amp;Ccedil;arşamba 21:00-22:00   &lt;br /&gt;
Adres: &lt;a href="https://www.livemeeting.com/cc/mvp/join?id=WG72QF&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/mvp/join?id=WG72QF&amp;amp;role=attend&lt;/a&gt;  &lt;br /&gt;
&lt;br /&gt;
Konu: &lt;strong&gt;REST Bazlı WCF Servisleri ve WCF Rest Starter Kit     &lt;br /&gt;
&lt;/strong&gt;Konuşmacı: Burak Selim ŞENYURT   &lt;br /&gt;
Zaman: 26 Mayıs 2009 Salı 21:00-22:00   &lt;br /&gt;
Adres: &lt;a href="https://www.livemeeting.com/cc/mvp/join?id=T9FM2B&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/mvp/join?id=T9FM2B&amp;amp;role=attend&lt;/a&gt;   &lt;br /&gt;
&lt;br /&gt;
Konu: &lt;strong&gt;XNA Game Studio ile 3D Oyun Geliştirme-1&lt;/strong&gt;   &lt;br /&gt;
Konuşmacı: Cemil UZUN   &lt;br /&gt;
Zaman: 27 Mayıs 2009 &amp;Ccedil;arşamba 21:00-22:00   &lt;br /&gt;
Adres: &lt;a href="https://www.livemeeting.com/cc/mvp/join?id=9QPZ6Q&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/mvp/join?id=9QPZ6Q&amp;amp;role=attend&lt;/a&gt; 
&lt;/p&gt;
&amp;nbsp;
&lt;/div&gt;
&lt;div style="text-align: center"&gt;
&amp;nbsp;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/serhat/~4/K_9ZrKtaqo0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/serhat/~3/K_9ZrKtaqo0/post.aspx</link>
      <author>serhattas1989.nospam@nospam.gmail.com (Serhat)</author>
      <comments>http://www.serhattas.net/post/2009/05/12/nedirtvcom-Mayc4b1s-Ayc4b1-Webinerleri.aspx#comment</comments>
      <guid isPermaLink="false">http://www.serhattas.net/post.aspx?id=308e69d8-fc45-4577-a629-9a84f7f6c8fe</guid>
      <pubDate>Tue, 12 May 2009 00:08:00 +0300</pubDate>
      <category>Duyuru &amp; Haber</category>
      <dc:publisher>Serhat</dc:publisher>
      <pingback:server>http://www.serhattas.net/pingback.axd</pingback:server>
      <pingback:target>http://www.serhattas.net/post.aspx?id=308e69d8-fc45-4577-a629-9a84f7f6c8fe</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.serhattas.net/trackback.axd?id=308e69d8-fc45-4577-a629-9a84f7f6c8fe</trackback:ping>
      <wfw:comment>http://www.serhattas.net/post/2009/05/12/nedirtvcom-Mayc4b1s-Ayc4b1-Webinerleri.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.serhattas.net/syndication.axd?post=308e69d8-fc45-4577-a629-9a84f7f6c8fe</wfw:commentRss>
    <feedburner:origLink>http://www.serhattas.net/post.aspx?id=308e69d8-fc45-4577-a629-9a84f7f6c8fe</feedburner:origLink></item>
    <item>
      <title>nedirtv?com - Nisan Ayı Webinerleri</title>
      <description>&lt;div style="text-align: center"&gt;
&lt;img src="http://profile.ak.facebook.com/object3/1703/123/n69299116143_5536.jpg" border="0" alt="nedirtv webiner" /&gt;
&lt;/div&gt;
&lt;div align="left"&gt;
&lt;div align="center"&gt;
&lt;/div&gt;
&lt;h3 align="center"&gt;nedirtv?com - Nisan Ayı Webinerleri&lt;/h3&gt;
&lt;p&gt;
Bu ay SQL Server Integration Services, Silverlight 3.0, ASP.NET MVC ve
SQL Data Services gibi yepyeni konularında olduğu webiner programımız
aşağıdadır.
&lt;/p&gt;
Webinerlere
katılmak i&amp;ccedil;in etkinlik zamanında belirtilen sayfaya giriş yapmanız
yeterlidir. Eğer bilgisayarınızdan Windows Live Meeting&amp;#39;i kullanarak
ilk defa bir webinere katılacaksanız, etkinlik vaktinden 5 dakika kadar
&amp;ouml;nce sayfaya giriş yapmanız ve bilgisayarınıza k&amp;uuml;&amp;ccedil;&amp;uuml;k bir kurulum
yapmanız yeterli olacaktır.
&lt;p&gt;
&lt;br /&gt;
&lt;br /&gt;
Konu: &lt;strong&gt;SQL Server Integration Services&lt;/strong&gt;&lt;br /&gt;
Zaman: 14 Nisan 2009 Salı 21:00-22:00&lt;br /&gt;
Konuşmacı: Burak BATUR&lt;br /&gt;
Adres: &lt;a rel="nofollow" href="https://www.livemeeting.com/cc/usergroups/join?id=K3S876&amp;amp;role=attend" target="_blank" onmousedown="UntrustedLink.bootstrap($(this), "&gt;https://www.livemeeting.com/cc/usergroups/join?id=K3S876&amp;amp;role=attend&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Konu: &lt;strong&gt;WCF ve TCP Hosting&lt;/strong&gt;&lt;br /&gt;
Zaman: 17 Nisan 2009 Cuma 21:00-22:00&lt;br /&gt;
Konuşmacı: Onur ŞİMŞEK&lt;br /&gt;
Adres: &lt;a rel="nofollow" href="https://www.livemeeting.com/cc/usergroups/join?id=M4Z6R2&amp;amp;role=attend" target="_blank" onmousedown="UntrustedLink.bootstrap($(this), "&gt;https://www.livemeeting.com/cc/usergroups/join?id=M4Z6R2&amp;amp;role=attend&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Konu: &lt;strong&gt;Silverlight 3.0&lt;/strong&gt;&lt;br /&gt;
Zaman: 19 Nisan 2009 Pazar 21:00-22:00&lt;br /&gt;
Konuşmacı: Daron Y&amp;Ouml;NDEM&lt;br /&gt;
Adres: &lt;a rel="nofollow" href="https://www.livemeeting.com/cc/usergroups/join?id=Z2535F&amp;amp;role=attend" target="_blank" onmousedown="UntrustedLink.bootstrap($(this), "&gt;https://www.livemeeting.com/cc/usergroups/join?id=Z2535F&amp;amp;role=attend&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Konu: &lt;strong&gt;XNA Game Studio 3.0 ile Oyun Geliştirme&lt;/strong&gt;&lt;br /&gt;
Zaman: 21 Nisan 2009 Salı 21:00-22:00&lt;br /&gt;
Konuşmacı: Cemil UZUN&lt;br /&gt;
Adres: &lt;a rel="nofollow" href="https://www.livemeeting.com/cc/usergroups/join?id=Q5TM74&amp;amp;role=attend" target="_blank" onmousedown="UntrustedLink.bootstrap($(this), "&gt;https://www.livemeeting.com/cc/usergroups/join?id=Q5TM74&amp;amp;role=attend&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Konu: &lt;strong&gt;SQL Server 2008 - Full-Text Indexing&lt;/strong&gt;&lt;br /&gt;
Zaman: 22 Nisan 2009 &amp;Ccedil;arşamba 21:00-22:00&lt;br /&gt;
Konuşmacı: Pamir ERDEM&lt;br /&gt;
Adres: &lt;a rel="nofollow" href="https://www.livemeeting.com/cc/usergroups/join?id=FD368T&amp;amp;role=attend" target="_blank" onmousedown="UntrustedLink.bootstrap($(this), "&gt;https://www.livemeeting.com/cc/usergroups/join?id=FD368T&amp;amp;role=attend&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Konu: &lt;strong&gt;Silverlight 3.0 ve İş Uygulamaları&lt;/strong&gt;&lt;br /&gt;
Zaman: 26 Nisan 2009 Pazar 21:00-22:00&lt;br /&gt;
Konuşmacı: Daron Y&amp;Ouml;NDEM&lt;br /&gt;
Adres: &lt;a rel="nofollow" href="https://www.livemeeting.com/cc/usergroups/join?id=58G535&amp;amp;role=attend" target="_blank" onmousedown="UntrustedLink.bootstrap($(this), "&gt;https://www.livemeeting.com/cc/usergroups/join?id=58G535&amp;amp;role=attend&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Konu: &lt;strong&gt;ASP.NET MVC Framework&amp;#39;e Giriş&lt;/strong&gt;&lt;br /&gt;
Zaman: 27 Nisan 2009 Pazartesi 21:00-22:00&lt;br /&gt;
Konuşmacı: Uğur UMUTLUOĞLU&lt;br /&gt;
Adres: &lt;a rel="nofollow" href="https://www.livemeeting.com/cc/usergroups/join?id=GNM9B3&amp;amp;role=attend" target="_blank" onmousedown="UntrustedLink.bootstrap($(this), "&gt;https://www.livemeeting.com/cc/usergroups/join?id=GNM9B3&amp;amp;role=attend&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Konu: &lt;strong&gt;SQL Data Services&lt;/strong&gt;&lt;br /&gt;
Zaman: 28 Nisan 2009 Salı 21:00-22:00&lt;br /&gt;
Konuşmacı: Y.Tarık KRANDA&lt;br /&gt;
Adres: &lt;a rel="nofollow" href="https://www.livemeeting.com/cc/usergroups/join?id=4S2MDW&amp;amp;role=attend" target="_blank" onmousedown="UntrustedLink.bootstrap($(this), "&gt;https://www.livemeeting.com/cc/usergroups/join?id=4S2MDW&amp;amp;role=attend&lt;/a&gt; 
&lt;/p&gt;
&amp;nbsp;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/serhat/~4/Gv-rVLOK00c" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/serhat/~3/Gv-rVLOK00c/post.aspx</link>
      <author>serhattas1989.nospam@nospam.gmail.com (Serhat)</author>
      <comments>http://www.serhattas.net/post/2009/04/10/nedirtvcom-Nisan-Ayc4b1-Webinerleri.aspx#comment</comments>
      <guid isPermaLink="false">http://www.serhattas.net/post.aspx?id=17a2791f-a835-4a8d-9805-d924b838a7da</guid>
      <pubDate>Fri, 10 Apr 2009 18:13:00 +0300</pubDate>
      <category>Duyuru &amp; Haber</category>
      <dc:publisher>Serhat</dc:publisher>
      <pingback:server>http://www.serhattas.net/pingback.axd</pingback:server>
      <pingback:target>http://www.serhattas.net/post.aspx?id=17a2791f-a835-4a8d-9805-d924b838a7da</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.serhattas.net/trackback.axd?id=17a2791f-a835-4a8d-9805-d924b838a7da</trackback:ping>
      <wfw:comment>http://www.serhattas.net/post/2009/04/10/nedirtvcom-Nisan-Ayc4b1-Webinerleri.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.serhattas.net/syndication.axd?post=17a2791f-a835-4a8d-9805-d924b838a7da</wfw:commentRss>
    <feedburner:origLink>http://www.serhattas.net/post.aspx?id=17a2791f-a835-4a8d-9805-d924b838a7da</feedburner:origLink></item>
    <item>
      <title>Visual Studio Add-In  - CopySourceAsHtml</title>
      <description>&lt;p&gt;
&amp;Ccedil;oğu blog yazarı gibi bazı durumlarda kod paylaştığımda onları renklendirmek zorunda oluyorum.BlogEngine&amp;#39;de bu hizmeti veriyor fakat farklı satırlarda dağınık kodlar olunca bu bile uzun zaman alıyor.Ger&amp;ccedil;i bu hizmeti veren bazı siteler var fakat onlarada tam olarak ısınamadım :) . Visual Studio&amp;#39;da yazılan kodu direk olarak paylaşıma hazırlayan bir add-in var.Adı&amp;nbsp; &lt;u&gt;CopySourceAsHtml&lt;/u&gt; .
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/ " target="_blank"&gt;Eklentiyi İndir &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Eklentiyi kurduktan sonra kodu se&amp;ccedil;ip sağtuş /&amp;nbsp; Copy As HTML diyoruz&lt;br /&gt;
&lt;img src="/pics/MakaleResim/mk_35_1.jpg" alt="visual studio" /&gt;
&lt;/p&gt;
&lt;p&gt;
Daha sonra ekrana aşağıdaki&amp;nbsp; pencere gelecektir.Koda uygulanacak ayarları se&amp;ccedil;ebiliriz buradan.Mesela Number lines from&amp;#39;u işaretlemezsek satır numaraları g&amp;ouml;z&amp;uuml;kmeyecektir gibi.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;img src="/pics/MakaleResim/mk_35_2.jpg" alt="visual studio eklenti kod renklendirme" /&gt;
&lt;/p&gt;
&lt;p&gt;
OK dedikten sonra artık kodlarımız hafızada hazır beklemektedir.Tek yapmamız gereken kodlarımızı kullanacağımız yere yapıştırmak olacaktır.&amp;Ouml;rnek olması a&amp;ccedil;ısından basit bir not defterine kodları yapıştırarak test.html sayfası oluşturdum .&lt;br /&gt;
&lt;img src="/pics/MakaleResim/mk_35_3.jpg" alt="visual studio code" /&gt;
&lt;/p&gt;
&lt;p&gt;
Kodları eklediğimiz test.html sayfasını &amp;ccedil;alıştırırsak renklendirme işleminin problemsiz ve olduk&amp;ccedil;a kolay bir şekilde HTML olarak oluştuğunu g&amp;ouml;rebiliriz .&lt;br /&gt;
&lt;img src="/pics/MakaleResim/mk_35_4.jpg" alt="visual studio add-in" /&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
İyi &amp;ccedil;alışmalar herkese :) 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/serhat/~4/P6ZpNXGMD1Q" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/serhat/~3/P6ZpNXGMD1Q/post.aspx</link>
      <author>serhattas1989.nospam@nospam.gmail.com (Serhat)</author>
      <comments>http://www.serhattas.net/post/2009/04/07/Visual-Studio-Add-In-CopySourceAsHtml.aspx#comment</comments>
      <guid isPermaLink="false">http://www.serhattas.net/post.aspx?id=ef8e7c4a-78a5-4d42-8dbe-6efe13e3ab4c</guid>
      <pubDate>Tue, 07 Apr 2009 22:12:00 +0300</pubDate>
      <category>Visual Studio</category>
      <dc:publisher>Serhat</dc:publisher>
      <pingback:server>http://www.serhattas.net/pingback.axd</pingback:server>
      <pingback:target>http://www.serhattas.net/post.aspx?id=ef8e7c4a-78a5-4d42-8dbe-6efe13e3ab4c</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.serhattas.net/trackback.axd?id=ef8e7c4a-78a5-4d42-8dbe-6efe13e3ab4c</trackback:ping>
      <wfw:comment>http://www.serhattas.net/post/2009/04/07/Visual-Studio-Add-In-CopySourceAsHtml.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.serhattas.net/syndication.axd?post=ef8e7c4a-78a5-4d42-8dbe-6efe13e3ab4c</wfw:commentRss>
    <feedburner:origLink>http://www.serhattas.net/post.aspx?id=ef8e7c4a-78a5-4d42-8dbe-6efe13e3ab4c</feedburner:origLink></item>
    <item>
      <title>nedirtv?com - Mart Ayı Webinerleri</title>
      <description>&lt;strong&gt;nedirtv?com webinerleri Mart ayında da t&amp;uuml;m hızıyla devam ediyor.
Sekiz farklı webinerin olacağı bu ayda XNA Game Studio, Visual
Basic.NET ve SQL Server 2008 gibi konuları ilk defa ele alacağız.&lt;/strong&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
Mart ayında ger&amp;ccedil;ekleştireceğimiz webinerlerle ilgili bilgileri aşağıda bulabilirsiniz.
&lt;/p&gt;
&lt;p&gt;
Webinerlere
katılmak i&amp;ccedil;in etkinlik zamanında belirtilen sayfaya giriş yapmanız
yeterlidir. Eğer bilgisayarınızdan Windows Live Meeting&amp;#39;i kullanarak
ilk defa bir webinere katılacaksanız, etkinlik vaktinden 5 dakika kadar
&amp;ouml;nce sayfaya giriş yapmanız ve bilgisayarınıza k&amp;uuml;&amp;ccedil;&amp;uuml;k bir kurulum
yapmanız yeterli olacaktır.
&lt;/p&gt;
&lt;p&gt;
Konu: &lt;strong&gt;XNA Game Studio 3.0&amp;#39;a Giriş     &lt;br /&gt;
&lt;/strong&gt;Zaman: 15 Mart 2009 Pazar 15:00-16:00   &lt;br /&gt;
Konusmacı: Cemil UZUN   &lt;br /&gt;
Katılım Adresi: &lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=ZQ2B6R&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=ZQ2B6R&amp;amp;role=attend&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Konu: &lt;strong&gt;ASP.NET - Veriye Erişim - I     &lt;br /&gt;
&lt;/strong&gt;Zaman: 16 Mart 2009 Pazartesi 21:00-22:00   &lt;br /&gt;
Konusmacı: Uğur UMUTLUOĞLU   &lt;br /&gt;
Katılım Adresi: &lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=S8GGH9&amp;amp;role=attend" title="https://www.livemeeting.com/cc/usergroups/join?id=S8GGH9&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=S8GGH9&amp;amp;role=attend&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Konu: &lt;strong&gt;ASP.NET - Veriye Erişim - II&lt;/strong&gt;   &lt;br /&gt;
Zaman: 18 Mart 2009 &amp;Ccedil;arşamba 21:00-22:00   &lt;br /&gt;
Konusmacı: Uğur UMUTLUOĞLU   &lt;br /&gt;
Katılım Adresi: &lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=HS24BN&amp;amp;role=attend" title="https://www.livemeeting.com/cc/usergroups/join?id=HS24BN&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=HS24BN&amp;amp;role=attend&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Konu: &lt;strong&gt;Visual Basic.NET 9.0&lt;/strong&gt;   &lt;br /&gt;
Zaman: 23 Mart 2009 Pazartesi 21:00-22:00   &lt;br /&gt;
Konusmacı: Burak Selim ŞENYURT   &lt;br /&gt;
Katılım Adresi: &lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=3RPNWR&amp;amp;role=attend" title="https://www.livemeeting.com/cc/usergroups/join?id=3RPNWR&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=3RPNWR&amp;amp;role=attend&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Konu: &lt;strong&gt;MOSS Form Servisleri&lt;/strong&gt;   &lt;br /&gt;
Zaman: 24 Mart 2009 Salı 21:00-22:00   &lt;br /&gt;
Konusmacı: Burak BATUR   &lt;br /&gt;
Katılım Adresi: &lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=PCWN5B&amp;amp;role=attend" title="https://www.livemeeting.com/cc/usergroups/join?id=PCWN5B&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=PCWN5B&amp;amp;role=attend&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Konu: &lt;strong&gt;SQL Server 2008 - Full-Text Indexing&lt;/strong&gt;   &lt;br /&gt;
Zaman: 25 Mart 2009 &amp;Ccedil;arşamba 21:00-22:00   &lt;br /&gt;
Konusmacı: Pamir ERDEM   &lt;br /&gt;
Katılım Adresi: &lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=N44G96&amp;amp;role=attend" title="https://www.livemeeting.com/cc/usergroups/join?id=N44G96&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=N44G96&amp;amp;role=attend&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Konu: &lt;strong&gt;WCF - Giriş&lt;/strong&gt;   &lt;br /&gt;
Zaman: 27 Mart 2009 Cuma 21:00-22:00   &lt;br /&gt;
Konusmacı: Burak Selim ŞENYURT   &lt;br /&gt;
Katılım Adresi: &lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=4B89QK&amp;amp;role=attend" title="https://www.livemeeting.com/cc/usergroups/join?id=4B89QK&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=4B89QK&amp;amp;role=attend&lt;/a&gt;
&lt;/p&gt;
Konu: &lt;strong&gt;Workflow Foundation - Giriş&lt;/strong&gt; &lt;br /&gt;
Zaman: 30 Mart 2009 Pazartesi 21:00-22:00 &lt;br /&gt;
Konusmacı: Burak Selim ŞENYURT &lt;br /&gt;
Katılım Adresi: &lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=WJ77P2&amp;amp;role=attend" title="https://www.livemeeting.com/cc/usergroups/join?id=WJ77P2&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=WJ77P2&amp;amp;role=attend&lt;/a&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/serhat/~4/Clyxkdq4ukA" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/serhat/~3/Clyxkdq4ukA/post.aspx</link>
      <author>serhattas1989.nospam@nospam.gmail.com (Serhat)</author>
      <comments>http://www.serhattas.net/post/2009/03/13/nedirtvcom-Mart-Ayc4b1-Webinerleri.aspx#comment</comments>
      <guid isPermaLink="false">http://www.serhattas.net/post.aspx?id=cb5a6dd9-f3cc-4205-a24b-4b1a4f99dcbd</guid>
      <pubDate>Fri, 13 Mar 2009 01:13:00 +0300</pubDate>
      <category>Duyuru &amp; Haber</category>
      <dc:publisher>Serhat</dc:publisher>
      <pingback:server>http://www.serhattas.net/pingback.axd</pingback:server>
      <pingback:target>http://www.serhattas.net/post.aspx?id=cb5a6dd9-f3cc-4205-a24b-4b1a4f99dcbd</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.serhattas.net/trackback.axd?id=cb5a6dd9-f3cc-4205-a24b-4b1a4f99dcbd</trackback:ping>
      <wfw:comment>http://www.serhattas.net/post/2009/03/13/nedirtvcom-Mart-Ayc4b1-Webinerleri.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.serhattas.net/syndication.axd?post=cb5a6dd9-f3cc-4205-a24b-4b1a4f99dcbd</wfw:commentRss>
    <feedburner:origLink>http://www.serhattas.net/post.aspx?id=cb5a6dd9-f3cc-4205-a24b-4b1a4f99dcbd</feedburner:origLink></item>
    <item>
      <title>nedirtv?com 3. Yıldönümü Seminerleri - İstanbul</title>
      <description>&lt;strong&gt;nedirtv?com ailesi olarak 3. yılımızı 14 Mart 2009 tarihinde
İstanbul&amp;#39;da ger&amp;ccedil;ekleştireceğimiz seminerlerle kutluyoruz. Bu &amp;ouml;nemli
etkinliğe &amp;uuml;yelerimizin katılımlarını bekliyoruz. &lt;/strong&gt;
&lt;br /&gt;
&lt;div style="text-align: center"&gt;
&lt;img src="http://www.nedirtv.com/images/haberler/logo_nedirtv.gif" border="0" alt="" /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;p&gt;
2006
Mart ayında yayın hayatına başlayan nedirtv?com 3. yaşını kutluyor. &amp;Uuml;&amp;ccedil;
yıldır hazırladığımız T&amp;uuml;rk&amp;ccedil;e i&amp;ccedil;erikli videolarla, ger&amp;ccedil;ekleştirdiğimiz
webiner ve seminerlerle bilgiyi paylaşmaya, paylaştık&amp;ccedil;a b&amp;uuml;y&amp;uuml;tmeye
&amp;ccedil;alıştık. &amp;Uuml;&amp;ccedil;&amp;uuml;nc&amp;uuml; yılımızı sizlerle kutlamak ve bilgi paylaşımını bu
seferde y&amp;uuml;zy&amp;uuml;ze ger&amp;ccedil;ekleştirebilmek i&amp;ccedil;in &lt;strong&gt;14 Mart 2009 Cumartesi&lt;/strong&gt; g&amp;uuml;n&amp;uuml; &lt;strong&gt;İstanbul&lt;/strong&gt;&amp;#39;da ger&amp;ccedil;ekleştireceğimiz seminerlere &amp;uuml;yelerimizin katılımlarını bekliyoruz.
&lt;/p&gt;
&lt;p&gt;
Seminer programını aşağıda bulabilirsiniz. Kayıt işlemini &lt;a href="http://www.nedirtv.com/EtkinlikKayit.aspx?EtkinlikId=1"&gt;&lt;strong&gt;bu sayfadan&lt;/strong&gt;&lt;/a&gt; ger&amp;ccedil;ekleştirebilirsiniz. Kayıt işleminden &amp;ouml;nce siteye giriş yapmanız gerekiyor!
&lt;/p&gt;
&lt;p&gt;
Seminerlere &lt;strong&gt;150 kişi&lt;/strong&gt; katılabilecektir. Seminerlere katılım &lt;u&gt;&amp;uuml;cretsizdir&lt;/u&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;SEMİNER PROGRAMI&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
10:00-10:10 &lt;strong&gt;A&amp;ccedil;ılış&lt;/strong&gt;&lt;br /&gt;
10:15-11:00 &lt;strong&gt;Windows 7 (Fatih Coşkun)&lt;/strong&gt;&lt;br /&gt;
11:00-12:00 &lt;strong&gt;Multipoint Programlama (Daron Y&amp;ouml;ndem)&lt;/strong&gt;&lt;br /&gt;
12:00-13:00 &lt;strong&gt;ASP.NET 3.5 SP1 Yenilikleri (Uğur Umutluoğlu)&lt;/strong&gt;&lt;br /&gt;
14:00-15:30 &lt;strong&gt;Derinlerde C# (Burak Selim Şenyurt)&lt;/strong&gt;&lt;br /&gt;
15:30-17:00 &lt;strong&gt;SQL Server 2008 ile Gelen Yenilikler (Pamir Erdem)&lt;/strong&gt;&lt;br /&gt;
17:00-17:15 &lt;strong&gt;Hediye &amp;Ccedil;ekilişi ve Kapanış&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Tarih: &lt;strong&gt;14 Mart 2009 Cumartesi&lt;/strong&gt;&lt;br /&gt;
Yer: Microsoft İstanbul Ofisi&lt;br /&gt;
Bellevue Residence Levent Mahallesi, Aydın Sokak. No:7 Levent İstanbul&lt;br /&gt;
Kroki i&amp;ccedil;in &lt;a href="http://www.nedirtv.com/images/misc/microsoft_istanbul_kroki.gif" target="_blank"&gt;tıklayın&lt;/a&gt;
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/serhat/~4/4vl3BFLWJHg" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/serhat/~3/4vl3BFLWJHg/post.aspx</link>
      <author>serhattas1989.nospam@nospam.gmail.com (Serhat)</author>
      <comments>http://www.serhattas.net/post/2009/03/06/nedirtvcom-3-Yc4b1ldonumu-Seminerleri-Istanbul.aspx#comment</comments>
      <guid isPermaLink="false">http://www.serhattas.net/post.aspx?id=8b1a772a-418b-4796-8a47-fd3a35e04d72</guid>
      <pubDate>Fri, 06 Mar 2009 10:28:00 +0300</pubDate>
      <category>Duyuru &amp; Haber</category>
      <dc:publisher>Serhat</dc:publisher>
      <pingback:server>http://www.serhattas.net/pingback.axd</pingback:server>
      <pingback:target>http://www.serhattas.net/post.aspx?id=8b1a772a-418b-4796-8a47-fd3a35e04d72</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.serhattas.net/trackback.axd?id=8b1a772a-418b-4796-8a47-fd3a35e04d72</trackback:ping>
      <wfw:comment>http://www.serhattas.net/post/2009/03/06/nedirtvcom-3-Yc4b1ldonumu-Seminerleri-Istanbul.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.serhattas.net/syndication.axd?post=8b1a772a-418b-4796-8a47-fd3a35e04d72</wfw:commentRss>
    <feedburner:origLink>http://www.serhattas.net/post.aspx?id=8b1a772a-418b-4796-8a47-fd3a35e04d72</feedburner:origLink></item>
    <item>
      <title>Data Caching (Verinin önbellekte tutulması)</title>
      <description>&lt;p&gt;
Merhaba arkadaşlar,&lt;br /&gt;
Bu yazımızda ASP.NET uygulamalarında bize performans kazandıran bir &amp;ouml;zellik olan Data Caching&amp;#39;e bakacağız.Data Caching&amp;#39;i sitemizde kullanılan bir nesnenin her kullanıcıya tekrardan yaratılmasını engelleyerek bizim belirttiğimiz &amp;ouml;zellikler(bellekte duracağı s&amp;uuml;re vb) doğrultusunda t&amp;uuml;m ziyaret&amp;ccedil;ilerin Caching işlemi uygulanmış nesneye erişerek tekrardan her bir kullanıcı i&amp;ccedil;in nesnemizin yeniden oluşturulmasını engellemek i&amp;ccedil;in kullanırız.Aslında bu nesne dediğimizde veritabanından gelen ve i&amp;ccedil;erisinde kayıtlarımızın bulunduğu DataTable,DataSet veya elemanlarımızın bulunduğu koleksiyonlardan başka birşey değildir.Elimizdeki bir veriyi belleğe almak istersek Page sınıfında ki Cache nesnesinin Insert isimli metodunu kullanarak verimizi sunucumuzun belleğinde saklayabiliriz.Verilerimizi belleğe atarken de key-value &amp;ccedil;iftleri olarak saklakamtayız. 
&lt;/p&gt;
&lt;p&gt;
Tabi ki bizim oluşturmak istediğimiz nesneleri bellekte belirlediğimiz s&amp;uuml;reler doğrultusunda tutabileceğimizi s&amp;ouml;ylemiştik.Saklama işleminde de aşağıdaki iki y&amp;ouml;ntemi kullanabiliriz;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Sliding Expiration:&lt;/strong&gt; Bu y&amp;ouml;ntem ile bellekte ki verimize talep geldik&amp;ccedil;e sunucumuzda durmasını sağlarız.Ş&amp;ouml;yle ki mesela veritabanından aldığımız verileri bir DataTable&amp;#39;ye attık ve bu veriyi bellek &amp;uuml;zerinde saklamak i&amp;ccedil;in Sliding Expration y&amp;ouml;ntemi ile 10 dk durmasını istediğimiz de ve ziyaret&amp;ccedil;i bu nesneye eriştiğinde bellekte oluşacak fakat ulaştıktan sonra bellekteki nesneye talep gelmez ise bellekten kaldırılacaktır.Fakat bellek &amp;uuml;zerine &amp;ccedil;ıkartılan bir nesnemize hafızada tutulma s&amp;uuml;resi olarak 10 dk verdiğimizde 18:15&amp;#39;de bir talep geldiğinde nesnemiz 18:25&amp;#39;e kadar bellek &amp;uuml;zerinde bulunacaktır.Eğer 18:15&amp;#39;te belleğe &amp;ccedil;ıkartılan nesnemize 18:20&amp;#39;de bir talep gelirse eğer bu sefer verimiz 18:30&amp;#39;a kadar bellek &amp;uuml;zerinde duracağını s&amp;ouml;yleyebiliriz.Yani belirttiğimiz s&amp;uuml;re i&amp;ccedil;erisinde nesnemize bir talep gelirse bellekteki s&amp;uuml;remizin &amp;uuml;st&amp;uuml;ne bizim verdiğimiz s&amp;uuml;re eklenecektir.Aşağıdaki &amp;ouml;rneğe bakacak olursak veritabanından gelen bilgilerin ilk talep geldiğinde nesneyi belleğe 25 saniyeliğine atıyoruz,bu 25 saniye i&amp;ccedil;inde bir talep gelirse veriler veritabanından tekrar &amp;ccedil;ekilmiyor fakat 25 saniye dolduktan sonra bir talep gelirse sayfamıza tekrardan veritabanından bilgileri okuyum cache&amp;#39;e aktarılıyor yani veritabanımızda değişiklikleri 25 saniye dolduktan sonra anlayabileceğiz. 
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI.WebControls;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Data.SqlClient;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Data;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; _Default : System.Web.UI.Page &lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Page_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (Cache[&amp;quot;ogrenciler&amp;quot;] == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SqlConnection con = &lt;span class="kwrd"&gt;new&lt;/span&gt; SqlConnection(&amp;quot;data source=.; initial catalog=OKUL; integrated security=&lt;span class="kwrd"&gt;true&lt;/span&gt;&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SqlDataAdapter da = &lt;span class="kwrd"&gt;new&lt;/span&gt; SqlDataAdapter(&amp;quot;select * from ogrenciler&amp;quot;, con);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataTable dt = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataTable();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; da.Fill(dt);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cache.Insert(&amp;quot;ogrenciler&amp;quot;, dt, &lt;span class="kwrd"&gt;null&lt;/span&gt;, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(25));&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write(&amp;quot;Veriler belleğe &amp;ccedil;ıkarılıp cache aktarıldı&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write(&amp;quot;Veriler Cache&amp;#39;den &amp;ccedil;ağırıldı&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GridView1.DataSource = Cache[&amp;quot;ogrenciler&amp;quot;];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GridView1.DataBind();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write(&amp;quot;&amp;lt;br/&amp;gt;&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write(DateTime.Now.ToLongTimeString());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Sayfamızı ilk &amp;ccedil;alıştırdığımızda aşağıdaki g&amp;ouml;r&amp;uuml;nt&amp;uuml;y&amp;uuml; elde edeceğiz.Cache &amp;ccedil;ıkarıldıktan sonra 25 saniye i&amp;ccedil;ine tekrar talepde bulunulur ise nesnemiz yeniden oluşturulmayıp cache&amp;#39;den &amp;ccedil;ağıralacaktır.Şu durumda 12:07:29&amp;#39;da veritabanımızdaki kayıtların belleğe &amp;ccedil;ıktığını g&amp;ouml;r&amp;uuml;yoruz.&lt;br /&gt;
&lt;img src="/pics/MakaleResim/mk_34_1.jpg" alt="" /&gt;&lt;br /&gt;
Fakat aşağıdaki resime baktığımızda verilerimizin cache&amp;#39;den geldiğini g&amp;ouml;r&amp;uuml;yoruz.&amp;Ccedil;&amp;uuml;nk&amp;uuml; 12:07:29&amp;#39;da belleğe verilerimizi &amp;ccedil;ıktığında 25 saniye ge&amp;ccedil;meden tekrar talepde bulunulduğu i&amp;ccedil;in bulunulan zamanını &amp;uuml;zerine 25 saniye daha eklenmektedir.S&amp;uuml;rekli talep geldiğinden zaman ertelenmektedir.Aradaki zaman farkına da bakarsak 41 saniye olduğunu g&amp;ouml;r&amp;uuml;yoruz.&lt;br /&gt;
&lt;br /&gt;
&lt;img src="/pics/MakaleResim/mk_34_2.jpg" alt="" /&gt;
&lt;/p&gt;
&lt;p&gt;
Son talepde bulunduğumuzda bellekteki verimize yukarıdaki resime bakacak olursak 12:08:10&amp;#39;da ulaştığımızı g&amp;ouml;r&amp;uuml;yoruz.Belleğe &amp;ccedil;ıkartılan nesnemize talep gelmez ise 25 saniye sonra kaldırılacağından&amp;nbsp; 12:08:10 &amp;#39;dan sonra 25 saniye istek olmaz ise cache&amp;#39;lenmiş verimiz sunucumuzun belleğinden kaldırılacaktır.Tekrar istekde bulunulduğu zaman yeniden nesnemiz oluşturularak belleğimiz de cache&amp;#39;lenecektir.G&amp;ouml;r&amp;uuml;ld&amp;uuml;ğ&amp;uuml; gibi yukarıdaki resimdeki zaman ile aşağıdaki zamana bakacak olursak 40 saniye talep olmadığından verimiz bellektek kaldırıldı ve tekrar istekte bulunulduğunda nesnemiz veritabanımızdaki bilgiler ile doldurulup cache&amp;#39;lendi.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="/pics/MakaleResim/mk_34_3.jpg" alt="" /&gt;
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
Cache.Insert(&amp;quot;ogrenciler&amp;quot;, dt, &lt;span class="kwrd"&gt;null&lt;/span&gt;, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(25)); 
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
&lt;br /&gt;
Yukarıda ki satırı incelemek gerekirsek nesnemizi Cache&amp;#39;lemek istediğimizde Cache sınıfının Insert metodunu kullandığımızı s&amp;ouml;ylemiştik.İlk parametresi Cache&amp;#39;deki verimize ulaşmak istediğimiz adı veriyoruz.İkinci parametrede vermiş olduğumuz ad ile Cache&amp;#39;lenecek olan nesnemizi veriyoruz ki bu dt adında bir DataTable nesnemiz.Veritabanından gelen kayıtların tutulduğu nesnedir.&amp;Uuml;&amp;ccedil;&amp;uuml;nc&amp;uuml; parametre bizden CacheDependecy tipinden bir değer beklemektedir.Kısaca bahsetmek gerekirsek bir dosyamıza veya veritabanımıza bağlı olarak Cache&amp;#39;leme işlemini yapmamızı sağlar.Burada bu y&amp;ouml;ntemi kullanmadığımızdan null değerini verip ge&amp;ccedil;tik.D&amp;ouml;rd&amp;uuml;nc&amp;uuml; parametremizde Cache&amp;#39;leme y&amp;ouml;ntemizi belirtiyoruz.Beşinci parametremiz de ise nesnemizin tutulma,ertelenme s&amp;uuml;resini veriyoruz.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Absolute Expiration&lt;/strong&gt; :Bu y&amp;ouml;ntemde ise belirlediğimiz s&amp;uuml;re dolduğunda nesnemizin bellekten kaldırılmasını sağlar.Aşağıdaki kodlar &amp;uuml;zerinden konuşacak olursak sayfamıza talepde bulunulduğunda veritabanımızdaki bilgilerimiz dt isimli DataTable nesnemize doldurulacaktır.Daha sonra Insert metodu ile nesnemizi Cache&amp;#39;leyeceğiz.Fakat burada Sliding&amp;#39;e g&amp;ouml;re farklı bir tanımlama yapacağız.Absolute tanımlı Cache&amp;#39;lemede insert metodunda belirttiğimiz s&amp;uuml;re dolduğunda belleğimizin &amp;uuml;zerinde Cache&amp;#39;lenen nesne kalkacaktır.Sliding gibi Cache olduğu s&amp;uuml;re i&amp;ccedil;ersinde talep geldiğinde zamanın uzatılması gibi bir yapı s&amp;ouml;z konusun değildir Absolute Exprition tanımla Cache&amp;#39;lemede.Aşağıdaki &amp;ouml;rneğimize bakacak olursak sayfamız y&amp;uuml;klendiğinde dt isimli nesnemiz yaratılacak ve belirtmiş olduğumuz s&amp;uuml;re 30 saniye olduğundan s&amp;uuml;re dolduğunda belleğimizden kalkacaktır.Bu s&amp;uuml;reden sonra tekrar eğer talep gelirse&amp;nbsp; sayfamıza nesnemiz yeniden yaratılarak belleğimiz &amp;uuml;zerine Cache&amp;#39;lenecektir. 
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI.WebControls;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Data.SqlClient;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Data;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; AbsoluteExpiration : System.Web.UI.Page&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Page_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (Cache[&amp;quot;ogrencilerAbsoulute&amp;quot;] == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SqlConnection con = &lt;span class="kwrd"&gt;new&lt;/span&gt; SqlConnection(&amp;quot;data source=.; initial catalog=OKUL; integrated security=&lt;span class="kwrd"&gt;true&lt;/span&gt;&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SqlDataAdapter da = &lt;span class="kwrd"&gt;new&lt;/span&gt; SqlDataAdapter(&amp;quot;select * from ogrenciler&amp;quot;, con);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataTable dt = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataTable();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; da.Fill(dt);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cache.Insert(&amp;quot;ogrencilerAbsoulute&amp;quot;, dt, &lt;span class="kwrd"&gt;null&lt;/span&gt;, DateTime.Now.AddSeconds(30), System.Web.Caching.Cache.NoSlidingExpiration);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write(&amp;quot;Veriler belleğe &amp;ccedil;ıkarılıp cache aktarıldı&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write(&amp;quot;Veriler Cache&amp;#39;den &amp;ccedil;ağırıldı&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GridView1.DataSource = Cache[&amp;quot;ogrencilerAbsoulute&amp;quot;];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GridView1.DataBind();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write(&amp;quot;&amp;lt;br/&amp;gt;&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write(DateTime.Now.ToLongTimeString());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}
&lt;/p&gt;
&lt;/div&gt;&lt;div class="code"&gt;&lt;p&gt;
Cache.Insert(&amp;quot;ogrencilerAbsoulute&amp;quot;, dt, &lt;span class="kwrd"&gt;null&lt;/span&gt;, DateTime.Now.AddSeconds(30), System.Web.Caching.Cache.NoSlidingExpiration);
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Yukarıda ki satır &amp;uuml;zerine konuşmak gerekirse yine her zaman ki&amp;nbsp; gibi Cache&amp;#39;de saklayacağımız verimize bir key veriyoruz.İkinci parametremiz saklayacağımız nesnemiz olmaktadır.&amp;Uuml;&amp;ccedil;&amp;uuml;nc&amp;uuml; parametrenin CacheDependecy tipinden bir değer istemekte olduğunu fakat şimdilik kullanmak istemediğimizden null değerini veriyoruz.D&amp;ouml;rd&amp;uuml;nc&amp;uuml; parametrede ise nesnemizin bellek &amp;uuml;zerinde ne kadar duracağını s&amp;ouml;yl&amp;uuml;yoruz.Bu s&amp;uuml;re dolduğunda bellekten nesnemiz kaldırılacaktır.Son parametremiz de ise Cache&amp;#39;leme yapısını s&amp;ouml;yl&amp;uuml;yoruz. 
&lt;br /&gt;
Yukarıda kodumuzu &amp;ccedil;alıştırdığımızda aşağıdaki&amp;nbsp; gibi kayıtların okunup belleğe &amp;ccedil;ıkartıldığını g&amp;ouml;r&amp;uuml;yoruz.&lt;br /&gt;
&lt;br /&gt;
&lt;img src="/pics/MakaleResim/mk_34_4.jpg" alt="" /&gt;
&lt;/p&gt;
&lt;p&gt;
Verilerimiz belleğe 12:46:49&amp;#39;da &amp;ccedil;ıktığından 30 saniye boyunca bellek &amp;uuml;zerinde bulunacaktır.30 saniye i&amp;ccedil;inde talepde bulunulduğunda aşağıdaki gibi Cache&amp;#39;den nesnemizin &amp;ccedil;ağırıldığını yeniden nesnenin oluşturulmadığını g&amp;ouml;rmekteyiz.&lt;br /&gt;
&lt;img src="/pics/MakaleResim/mk_34_5.jpg" alt="" /&gt;&lt;br /&gt;
Fakat bellek &amp;uuml;zerine ilk &amp;ccedil;ıktı zaman olan yani 12:46:49 olan nesnemize 30 saniye dolduktan sonra ulaşmak istediğimizde veritabanından gelen kayıtların yeniden nesnemize eklenip oluşan nesnenin bellek &amp;uuml;zerinde Cache&amp;#39;lendiğini g&amp;ouml;r&amp;uuml;yoruz.Yani nesnemiz yeniden oluşturuluyor &amp;ccedil;&amp;uuml;nk&amp;uuml; vermiş olduğumuz s&amp;uuml;re tamamlanıyor.Sliding Expiration&amp;#39;da ki gibi bir erteleme s&amp;ouml;z konusu değildir Absolute Expiration&amp;#39;da.&lt;br /&gt;
&lt;br /&gt;
&lt;img src="/pics/MakaleResim/mk_34_6.jpg" alt="" /&gt;
&lt;/p&gt;
&lt;p&gt;
Bu Data Cache&amp;#39;leme y&amp;ouml;ntemleri ile sunucu-ziyaretci arasında işlemlerin daha hızlı olmasını sağlarız.Her kullanıcıya g&amp;ouml;sterilen belirli nesneleri bu şekilde cache&amp;#39;leyerek her kullanıcıya yeniden oluşturulmadan g&amp;ouml;sterebiliriz.Tabi ki sayfamız &amp;ccedil;ok hızlı olsun diye de t&amp;uuml;m uygulamayı bellek &amp;uuml;zerinde cache&amp;#39;lemek bir s&amp;uuml;re sonra bellek &amp;uuml;zerinde uygulamamızın &amp;ccedil;alışması i&amp;ccedil;in ayrılan alanın azalacağından performans kaybına ve &amp;ccedil;eşitli problemlerle karşılaşma ihtimali ortaya &amp;ccedil;ıkma ihtimalini g&amp;ouml;z &amp;ouml;n&amp;uuml;ne alarak abartıya ka&amp;ccedil;madan bu işlemleri yapmalıyız. 
&lt;/p&gt;
&lt;p&gt;
Bir sonraki makalede g&amp;ouml;r&amp;uuml;şmek &amp;uuml;zere :)
&lt;/p&gt;
&lt;p&gt;
Serhat TAŞ 
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/serhat/~4/9TbLZXUlSUw" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/serhat/~3/9TbLZXUlSUw/post.aspx</link>
      <author>serhattas1989.nospam@nospam.gmail.com (Serhat)</author>
      <comments>http://www.serhattas.net/post/2009/02/17/Data-Caching-(Verinin-onbellekte-tutulmasc4b1).aspx#comment</comments>
      <guid isPermaLink="false">http://www.serhattas.net/post.aspx?id=b0734620-5086-4278-affd-f1b92b71d70a</guid>
      <pubDate>Tue, 17 Feb 2009 10:41:00 +0300</pubDate>
      <category>ASP.NET</category>
      <dc:publisher>Serhat</dc:publisher>
      <pingback:server>http://www.serhattas.net/pingback.axd</pingback:server>
      <pingback:target>http://www.serhattas.net/post.aspx?id=b0734620-5086-4278-affd-f1b92b71d70a</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.serhattas.net/trackback.axd?id=b0734620-5086-4278-affd-f1b92b71d70a</trackback:ping>
      <wfw:comment>http://www.serhattas.net/post/2009/02/17/Data-Caching-(Verinin-onbellekte-tutulmasc4b1).aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.serhattas.net/syndication.axd?post=b0734620-5086-4278-affd-f1b92b71d70a</wfw:commentRss>
    <feedburner:origLink>http://www.serhattas.net/post.aspx?id=b0734620-5086-4278-affd-f1b92b71d70a</feedburner:origLink></item>
    <item>
      <title>nedirtv?com - Şubat Ayı Webinerleri</title>
      <description>&lt;div align="center"&gt;
&lt;img src="http://www.nedirtv.com/images/haberler/logo_nedirtv_webinerleri.gif" border="0" alt="nedirtv?com webiner" /&gt;
&lt;/div&gt;
&lt;div align="center"&gt;
&lt;strong&gt;Şubat Ayı nedirtv?com Webinerlerinin tarihleri:&lt;/strong&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
Konu: ASP.NET 3.5 AJAX&lt;br /&gt;
Zaman: 4 Şubat 2009 &amp;Ccedil;arşamba 21:00-22:00&lt;br /&gt;
Konuşmacı: Fatih COŞKUN&lt;br /&gt;
Katılım Adresi: &lt;a rel="nofollow" href="https://www.livemeeting.com/cc/usergroups/join?id=ZQ2B6R&amp;amp;role=attend" target="_blank" onmousedown="UntrustedLink.bootstrap($(this), "&gt;https://www.livemeeting.com/cc/usergroups/join?id=ZQ2B6R&amp;amp;role=attend&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Konu: Expression Blend 2&lt;br /&gt;
Zaman: 6 Şubat 2009 Cuma 21:00-22:00&lt;br /&gt;
Konuşmacı: Daron Y&amp;Ouml;NDEM&lt;br /&gt;
Katılım Adresi: &lt;a rel="nofollow" href="https://www.livemeeting.com/cc/usergroups/join?id=P8W6DC&amp;amp;role=attend" target="_blank" onmousedown="UntrustedLink.bootstrap($(this), "&gt;https://www.livemeeting.com/cc/usergroups/join?id=P8W6DC&amp;amp;role=attend&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
Konu: Ado.Net Data Services - G&amp;uuml;venlik&lt;br /&gt;
Zaman: 11 Şubat 2009 &amp;Ccedil;arşamba 21:00-22:00&lt;br /&gt;
Konuşmacı: Burak Selim ŞENYURT&lt;br /&gt;
Katılım Adresi: &lt;a rel="nofollow" href="https://www.livemeeting.com/cc/usergroups/join?id=M587JZ&amp;amp;role=attend" target="_blank" onmousedown="UntrustedLink.bootstrap($(this), "&gt;https://www.livemeeting.com/cc/usergroups/join?id=M587JZ&amp;amp;role=attend&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
Konu: ASP.NET Uygulamalarında Performans İpu&amp;ccedil;ları&lt;br /&gt;
Zaman: 13 Şubat 2009 Cuma 21:00-22:00&lt;br /&gt;
Konuşmacı: Uğur UMUTLUOĞLU&lt;br /&gt;
Katılım Adresi: &lt;a rel="nofollow" href="https://www.livemeeting.com/cc/usergroups/join?id=ZJ5CG4&amp;amp;role=attend" target="_blank" onmousedown="UntrustedLink.bootstrap($(this), "&gt;https://www.livemeeting.com/cc/usergroups/join?id=ZJ5CG4&amp;amp;role=attend&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
Konu: Workflow Foundation&lt;br /&gt;
Zaman: 23 Şubat 2009 Pazartesi 21:00-22:00&lt;br /&gt;
Konuşmacı: Burak Selim ŞENYURT&lt;br /&gt;
Katılım Adresi: &lt;a rel="nofollow" href="https://www.livemeeting.com/cc/usergroups/join?id=7TQS69&amp;amp;role=attend" target="_blank" onmousedown="UntrustedLink.bootstrap($(this), "&gt;https://www.livemeeting.com/cc/usergroups/join?id=7TQS69&amp;amp;role=attend&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
Konu: MOSS 2007: InfoPath Form Services&lt;br /&gt;
Zaman: 24 Şubat 2009 Salı 21:00-22:00&lt;br /&gt;
Konuşmacı: Burak BATUR&lt;br /&gt;
Katılım Adresi: &lt;a rel="nofollow" href="https://www.livemeeting.com/cc/usergroups/join?id=52T7RP&amp;amp;role=attend" target="_blank" onmousedown="UntrustedLink.bootstrap($(this), "&gt;https://www.livemeeting.com/cc/usergroups/join?id=52T7RP&amp;amp;role=attend&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
Konu: Expression Web 2&lt;br /&gt;
Zaman: 25 Şubat 2009 &amp;Ccedil;arşamba 21:00-22:00&lt;br /&gt;
Konuşmacı: Cemil UZUN&lt;br /&gt;
Katılım Adresi: &lt;a rel="nofollow" href="https://www.livemeeting.com/cc/usergroups/join?id=7783W9&amp;amp;role=attend" target="_blank" onmousedown="UntrustedLink.bootstrap($(this), "&gt;https://www.livemeeting.com/cc/usergroups/join?id=7783W9&amp;amp;role=attend&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/serhat/~4/Y6UV_QwDPIY" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/serhat/~3/Y6UV_QwDPIY/post.aspx</link>
      <author>serhattas1989.nospam@nospam.gmail.com (Serhat)</author>
      <comments>http://www.serhattas.net/post/2009/02/03/nedirtvcom-Subat-Ayc4b1-Webinerleri.aspx#comment</comments>
      <guid isPermaLink="false">http://www.serhattas.net/post.aspx?id=1a9acbed-6609-4cf7-a12b-6480d4c7ca66</guid>
      <pubDate>Tue, 03 Feb 2009 22:16:00 +0300</pubDate>
      <category>Duyuru &amp; Haber</category>
      <dc:publisher>Serhat</dc:publisher>
      <pingback:server>http://www.serhattas.net/pingback.axd</pingback:server>
      <pingback:target>http://www.serhattas.net/post.aspx?id=1a9acbed-6609-4cf7-a12b-6480d4c7ca66</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.serhattas.net/trackback.axd?id=1a9acbed-6609-4cf7-a12b-6480d4c7ca66</trackback:ping>
      <wfw:comment>http://www.serhattas.net/post/2009/02/03/nedirtvcom-Subat-Ayc4b1-Webinerleri.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.serhattas.net/syndication.axd?post=1a9acbed-6609-4cf7-a12b-6480d4c7ca66</wfw:commentRss>
    <feedburner:origLink>http://www.serhattas.net/post.aspx?id=1a9acbed-6609-4cf7-a12b-6480d4c7ca66</feedburner:origLink></item>
    <item>
      <title>İstisnai Durum Sınıfları Oluşturmak</title>
      <description>&lt;p&gt;
Merhaba arkadaşlar,
&lt;/p&gt;
&lt;p&gt;
&amp;Ouml;nceki &lt;a href="http://www.serhattas.net/post/2009/01/09/Istisnai-Durum-Yonetimi-(-Exception-Handling-).aspx" target="_blank"&gt;yazımızda&lt;/a&gt; .NET&amp;#39;te bulunan ve en sık karşılaşılan hataları yakalamayı incelemiştik.Bunlar &amp;ouml;rneğin değişkenlerin alabileceği boyuttan fazla bir değer atandığında &lt;u&gt;OverflowException&lt;/u&gt; veya parametre bekleyen yere kabul edemeyeceği t&amp;uuml;rden bir değer attığımızda &lt;u&gt;FormatException&lt;/u&gt; gibi istisnai durum sınıfları bulunmakdaydı.Uygulamalarımızda oluşturduğumuz class&amp;#39;lar &amp;uuml;zerinden işlemler yaparken kendi hata yakalama mekanizmalarımızı oluşturmak isteyebiliriz.
&lt;/p&gt;
&lt;p&gt;
Bu hata yakalama sınıflarını yazmak i&amp;ccedil;in yazdığımız istisnai durumu class&amp;#39;ları &lt;u&gt;ApplicationException&lt;/u&gt; class&amp;#39;ından t&amp;uuml;retilmelidir. &lt;u&gt;ApplicationException&lt;/u&gt;&amp;#39;ın i&amp;ccedil;erisinde ki &amp;uuml;yeleri bu şekilde kendi Exception sınıfımızda kullanabiliriz.Burada ki kullanabileceğimiz &amp;uuml;yeler .NET&amp;#39;in bize verdiği hazır exception class&amp;#39;larındaki &amp;uuml;yelerdir aslında &amp;ouml;rneğin hatayı ekrana yazdırmakta kullandığımız &lt;u&gt;Message&lt;/u&gt; &amp;ouml;zelliği.
&lt;/p&gt;
&lt;p&gt;
&amp;Ouml;rnek &amp;uuml;zerinden devam etmek gerekirse 3 &amp;ouml;zelliği olan bir&lt;u&gt; Personel&lt;/u&gt; sınıfımız var ve bizim yapmak istediğimiz bu Personel sınıfının &lt;u&gt;Maas&lt;/u&gt; isimli &amp;ouml;zelliğine atanan değerleri kontrol etmek.Mesela 500-750 arasında bir değer atanırsa maaş ge&amp;ccedil;erli sayılıp ekrana yazılacak veya bu girilen değer 500&amp;#39;&amp;uuml;n altında veya 750&amp;#39;nin &amp;uuml;st&amp;uuml;nde olursa bu sefer oluşturduğumuz &lt;u&gt;PersonelException&lt;/u&gt; isimli exception sınıfını kullanarak bu hatayı yakaladığımızda oluşturduğumuz class&amp;#39;taki &lt;u&gt;message&lt;/u&gt; &amp;ouml;zelliği ile hata ile ilgili bilgiyi ekrana yazdırmak isteyelim.
&lt;/p&gt;
&lt;p&gt;
İlk olarak hata &amp;uuml;zerinde işlem yapacağımız class olan &lt;u&gt;PersonelException&lt;/u&gt; classını yazıyoruz.
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ConsoleApplication1&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;//PersonelException hata class&amp;#39;ımızını ApplicationException isimli sınıftan t&amp;uuml;reterek Exception &amp;ouml;zelliklerini kalıtım yoluyla alıyor.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;class&lt;/span&gt; PersonelException:ApplicationException&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt; _maas;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;//ctor&amp;#39;da &amp;uuml;zerinde işlem yapacağı parametreyi atıyoruz.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; PersonelException(&lt;span class="kwrd"&gt;double&lt;/span&gt; maas)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _maas = maas;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;//ve kalıtılan sınıfta Message &amp;ouml;zelliğini override ile eziyoruz.Bu sayede uygulama mantığımız doğrultusunda bir hata oluştuğunda istediğimiz hata mesajını ekrana yazdırabileceğiz.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Message&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;return&lt;/span&gt; &amp;quot;Ge&amp;ccedil;ersiz maaş girişi.Girilen maaş 500-750 arasında olmalıdır.Değer:&amp;quot;+_maas;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Daha sonra &lt;u&gt;Personel&lt;/u&gt; isimli class&amp;#39;ımızı yazarak 3 field tanımlıyoruz ve bu 3 field&amp;#39;leri property haline getirip &lt;u&gt;Maas&lt;/u&gt; isimli property&amp;#39;de atanan değeri karşılaştırıyoruz. 
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ConsoleApplication1&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;class&lt;/span&gt; Personel&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;//Personelimize ait 3 &amp;ouml;zelliği tanımlıyoruz.Buraya atanan maas &amp;ouml;zelliğini kontrol edeceğiz.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _ad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt; _maas;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _soyad;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Ad&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _ad; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { _ad = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Soyad&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _soyad; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { _soyad = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;//Personel sınıfımızın maaş isimli property&amp;#39;sinde get ve set bloklarını oluşturuyoruz.Get blogunda atanan değeri okuyoruz.Set blogunda ise atanan değeri kontrol etmek i&amp;ccedil;in bir if blogu yazıp value 500&amp;#39;&amp;uuml;n &amp;uuml;st&amp;uuml;nde ise ve 750&amp;#39;nin altında ise _maas isimli field&amp;#39;a değeri aktarıyoruz eger girilen deger 500-750 arsında değilse bu sefer else blogundan sonraki kod &amp;ccedil;alışarak &amp;ouml;nceden oluştrduğumuz PersonelException isimli exception class&amp;#39;ını &amp;ccedil;ağırarak ctor&amp;#39;undaki parametreye hesaplama yapılacak olan değer yani value bilgisini vererek hata mesajını yazdırıyoruz.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt; Maas&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _maas; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;value&lt;/span&gt; &amp;gt; 500 &amp;amp;&amp;amp; &lt;span class="kwrd"&gt;value&lt;/span&gt; &amp;lt; 750)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _maas = &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; PersonelException(&lt;span class="kwrd"&gt;value&lt;/span&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Programımızda ise nesnemizi oluşturup &lt;u&gt;Personel&lt;/u&gt; property&amp;#39;lerine değerleri atıyoruz.Eğer &lt;u&gt;Maas property&lt;/u&gt;&amp;#39;sine istenmeyen değer girilirse catch blogunda tanımladığımız &lt;u&gt;PersonelException&lt;/u&gt; isimli exception class&amp;#39;ının message &amp;ouml;zelliğini ekrana yazdırıyoruz.
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ConsoleApplication1&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;//personel nesnemizi tanımlıyoruz.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Personel p1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; Personel();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;//try-catch blogu i&amp;ccedil;erisinde property&amp;#39;lere değerleri atıyoruz.Eger p1 isimli nesnemizin Maas propertisine atanan değer 500-750 arasında değilse hata oluşacağından tanımladığımız catch bloguna d&amp;uuml;şerek oluşan hataya ait sınıftaki Message &amp;ouml;zelliğini kullanarak hata mesajını ekrana yazdıracağız.Eğer hata oluşmaz ise yani personelin girilen maaşı 500-750 arasında ise t&amp;uuml;m değerleri ekrana yazdıracağız.&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p1.Ad = &amp;quot;Serhat&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p1.Soyad = &amp;quot;Taş&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p1.Maas = 713;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;Ad:{0}\nSoyad:{1}\nMaaş:{2}&amp;quot;, p1.Ad, p1.Soyad, p1.Maas);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;catch&lt;/span&gt;(PersonelException pe)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(pe.Message);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadLine();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Programımızı &amp;ccedil;alıştırdığımızda girilen Maas değeri 713 olduğundan ve bu 500-750 arasında olduğundan program d&amp;uuml;zg&amp;uuml;n &amp;ccedil;alışarak aşağıdaki g&amp;ouml;r&amp;uuml;nt&amp;uuml;y&amp;uuml; oluşturacaktır.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.serhattas.net/pics/MakaleResim/mk_33_1.jpg" alt="istisnai durum" /&gt;
&lt;/p&gt;
&lt;p&gt;
Eğer Maas&amp;#39;a 1411 gibi istenmeyen bir değer atarsakta &lt;u&gt;PersonelException&lt;/u&gt; sınıfında oluşturduğumuz hata mesajı ekrana yazılacaktır.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.serhattas.net/pics/MakaleResim/mk_33_2.jpg" alt="exception" /&gt;
&lt;/p&gt;
&lt;p&gt;
Bu şekilde kendi uygulamamızdaki mantığa g&amp;ouml;re istenmeyen durumlara karşı hata yakalama class&amp;#39;ları yazarak uygulama &amp;uuml;zerindeki hakimiyetinizi arttırabilirsiniz.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.serhattas.net/Dosyalar/IstisnaiDurum.rar" target="_blank"&gt;İstisnai Durum &amp;ouml;rneğini indir &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Faydalı olması dileğiyle iyi &amp;ccedil;alışmalar :)
&lt;/p&gt;
&lt;p&gt;
Serhat TAŞ 
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/serhat/~4/CyUQlWnyns8" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/serhat/~3/CyUQlWnyns8/post.aspx</link>
      <author>serhattas1989.nospam@nospam.gmail.com (Serhat)</author>
      <comments>http://www.serhattas.net/post/2009/01/21/Istisnai-Durum-Sc4b1nc4b1flarc4b1-Olusturmak.aspx#comment</comments>
      <guid isPermaLink="false">http://www.serhattas.net/post.aspx?id=9751ad5a-b654-4e81-ac2f-999313e623e0</guid>
      <pubDate>Wed, 21 Jan 2009 16:18:00 +0300</pubDate>
      <category>C#</category>
      <dc:publisher>Serhat</dc:publisher>
      <pingback:server>http://www.serhattas.net/pingback.axd</pingback:server>
      <pingback:target>http://www.serhattas.net/post.aspx?id=9751ad5a-b654-4e81-ac2f-999313e623e0</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.serhattas.net/trackback.axd?id=9751ad5a-b654-4e81-ac2f-999313e623e0</trackback:ping>
      <wfw:comment>http://www.serhattas.net/post/2009/01/21/Istisnai-Durum-Sc4b1nc4b1flarc4b1-Olusturmak.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.serhattas.net/syndication.axd?post=9751ad5a-b654-4e81-ac2f-999313e623e0</wfw:commentRss>
    <enclosure url="http://www.serhattas.net/Dosyalar/IstisnaiDurum.rar" length="25562" type="application/octet-stream" /><media:content url="http://www.serhattas.net/Dosyalar/IstisnaiDurum.rar" fileSize="25562" type="application/octet-stream" /><itunes:explicit>yes</itunes:explicit><itunes:subtitle> Merhaba arkadaşlar, &amp;Ouml;nceki yazımızda .NET&amp;#39;te bulunan ve en sık karşılaşılan hataları yakalamayı incelemiştik.Bunlar &amp;ouml;rneğin değişkenlerin alabileceği boyuttan fazla bir değer atandığında OverflowException veya parametre bekleyen yere kabul </itunes:subtitle><itunes:author>serhattas1989.nospam@nospam.gmail.com (Serhat)</itunes:author><itunes:summary> Merhaba arkadaşlar, &amp;Ouml;nceki yazımızda .NET&amp;#39;te bulunan ve en sık karşılaşılan hataları yakalamayı incelemiştik.Bunlar &amp;ouml;rneğin değişkenlerin alabileceği boyuttan fazla bir değer atandığında OverflowException veya parametre bekleyen yere kabul edemeyeceği t&amp;uuml;rden bir değer attığımızda FormatException gibi istisnai durum sınıfları bulunmakdaydı.Uygulamalarımızda oluşturduğumuz class&amp;#39;lar &amp;uuml;zerinden işlemler yaparken kendi hata yakalama mekanizmalarımızı oluşturmak isteyebiliriz. Bu hata yakalama sınıflarını yazmak i&amp;ccedil;in yazdığımız istisnai durumu class&amp;#39;ları ApplicationException class&amp;#39;ından t&amp;uuml;retilmelidir. ApplicationException&amp;#39;ın i&amp;ccedil;erisinde ki &amp;uuml;yeleri bu şekilde kendi Exception sınıfımızda kullanabiliriz.Burada ki kullanabileceğimiz &amp;uuml;yeler .NET&amp;#39;in bize verdiği hazır exception class&amp;#39;larındaki &amp;uuml;yelerdir aslında &amp;ouml;rneğin hatayı ekrana yazdırmakta kullandığımız Message &amp;ouml;zelliği. &amp;Ouml;rnek &amp;uuml;zerinden devam etmek gerekirse 3 &amp;ouml;zelliği olan bir Personel sınıfımız var ve bizim yapmak istediğimiz bu Personel sınıfının Maas isimli &amp;ouml;zelliğine atanan değerleri kontrol etmek.Mesela 500-750 arasında bir değer atanırsa maaş ge&amp;ccedil;erli sayılıp ekrana yazılacak veya bu girilen değer 500&amp;#39;&amp;uuml;n altında veya 750&amp;#39;nin &amp;uuml;st&amp;uuml;nde olursa bu sefer oluşturduğumuz PersonelException isimli exception sınıfını kullanarak bu hatayı yakaladığımızda oluşturduğumuz class&amp;#39;taki message &amp;ouml;zelliği ile hata ile ilgili bilgiyi ekrana yazdırmak isteyelim. İlk olarak hata &amp;uuml;zerinde işlem yapacağımız class olan PersonelException classını yazıyoruz. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { &amp;nbsp;&amp;nbsp;&amp;nbsp; //PersonelException hata class&amp;#39;ımızını ApplicationException isimli sınıftan t&amp;uuml;reterek Exception &amp;ouml;zelliklerini kalıtım yoluyla alıyor. &amp;nbsp;&amp;nbsp;&amp;nbsp; class PersonelException:ApplicationException &amp;nbsp;&amp;nbsp;&amp;nbsp; { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private double _maas; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //ctor&amp;#39;da &amp;uuml;zerinde işlem yapacağı parametreyi atıyoruz. &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public PersonelException(double maas) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _maas = maas; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //ve kalıtılan sınıfta Message &amp;ouml;zelliğini override ile eziyoruz.Bu sayede uygulama mantığımız doğrultusunda bir hata oluştuğunda istediğimiz hata mesajını ekrana yazdırabileceğiz. &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override string Message &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &amp;quot;Ge&amp;ccedil;ersiz maaş girişi.Girilen maaş 500-750 arasında olmalıdır.Değer:&amp;quot;+_maas; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&amp;nbsp;&amp;nbsp; } } Daha sonra Personel isimli class&amp;#39;ımızı yazarak 3 field tanımlıyoruz ve bu 3 field&amp;#39;leri property haline getirip Maas isimli property&amp;#39;de atanan değeri karşılaştırıyoruz. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { &amp;nbsp;&amp;nbsp;&amp;nbsp; class Personel &amp;nbsp;&amp;nbsp;&amp;nbsp; { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Personelimize ait 3 &amp;ouml;zelliği tanımlıyoruz.Buraya atanan maas &amp;ouml;zelliğini kontrol edeceğiz. &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string _ad; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private double _maas; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string _</itunes:summary><itunes:keywords>C#</itunes:keywords><feedburner:origLink>http://www.serhattas.net/post.aspx?id=9751ad5a-b654-4e81-ac2f-999313e623e0</feedburner:origLink></item>
    <item>
      <title>Yapılar (Structs)</title>
      <description>&lt;p&gt;
Merhaba arkadaşlar,
&lt;/p&gt;
&lt;p&gt;
Bu yazımızda C# programlama dilimizin &amp;ouml;zelliklerinden biri olan &lt;u&gt;Struct(Yapı)&amp;#39;&lt;/u&gt;lara bakacağız.&lt;u&gt;Struct&lt;/u&gt;&amp;#39;lar &lt;u&gt;değer tipli&lt;/u&gt; verilerdir.Tanımlama bakımından ve i&amp;ccedil;erisinde bulundurduğu &amp;ouml;zellikleri g&amp;ouml;z &amp;ouml;n&amp;uuml;ne alırsak class&amp;#39;larla aynı benzerlikleri g&amp;ouml;sterdiğini s&amp;ouml;yleyebiliriz.Aralarındaki en &amp;ouml;nemli temel fark struct&amp;#39;ların değer tipli class&amp;#39;ların ise referans tipli olmasıdır.Yapı tanımlamaları&lt;u&gt; struct&lt;/u&gt; anahtar s&amp;ouml;zc&amp;uuml;ğ&amp;uuml; ile tanımlanmaktadır yani class anahtar kelimesi yerine struct yazılmaktadır. Elimizdeki verilere bazen referans yardımıyla ulaşmak performans kaybına yol a&amp;ccedil;abilir.Bildiğiniz gibi referans tipli veriler bellekte 2 ayrı b&amp;ouml;l&amp;uuml;mde bulunmaktaydı.Referans olan tipin verisi belleğin Heap alanında bulunurken bu heap&amp;#39;deki referansın adı da belleğin Stack adı verilen b&amp;ouml;l&amp;uuml;mde bulunarak Heap&amp;#39;daki referansın adresini saklamaktaydı.Değer tipli verilerimiz de ise b&amp;ouml;yle birşey s&amp;ouml;z konusu değildi.Değer tipli verilerin kendisi Stack b&amp;ouml;lgesinde bulunurlardı.Class ve Struct arasındaki temel fark budur yani bellekte tutuluş şekilleridir.Stack&amp;nbsp; alanında bulunan bir değişken i&amp;ccedil;in işlem yapmak belleğin diğer b&amp;ouml;l&amp;uuml;m&amp;uuml; olan Heap&amp;#39;e g&amp;ouml;re olduk&amp;ccedil;a hızlı olmaktadır.İ&amp;ccedil;erisinde basit işlemler olacağı zaman class yerine struct tanımlamak performans a&amp;ccedil;ısından olduk&amp;ccedil;a faydalıdır.&amp;Ccedil;&amp;uuml;nk&amp;uuml; Struct&amp;#39;lar değer tipli olduğundan belleğin Stack&amp;#39;inde bulunduğundan veri &amp;uuml;zerinde işlem yapmak daha hızlıdır !. 
&lt;/p&gt;
&lt;p&gt;
Temel olarak bir Struct tanımlaması aşağıdaki gibidir.
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;struct&lt;/span&gt; Yapimiz&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="rem"&gt;//&amp;Ouml;zelliklerimiz&lt;br /&gt;&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Tanımladığımız Struct i&amp;ccedil;erisine varsayılan bir metot yani &lt;u&gt;Default Constructor&lt;/u&gt; yazamayız.Ama parametre vererek parametreli bir yapıcı metot oluşturabilir.Aşağıda 3 adet &amp;ouml;zelliği olan bir Struct&amp;#39;ın oluğunu g&amp;ouml;r&amp;uuml;yoruz.
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;struct&lt;/span&gt; Yapimiz&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _ad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _soyad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _yas;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Bu tanımladığımız struct&amp;#39;a 3 adet parametli bir yapıcı metot yazabiliriz.Default yapıcı metotodun yazılamadığını s&amp;ouml;ylemiştik !
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;struct&lt;/span&gt; Yapimiz&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _ad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _soyad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; _yas;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; Yapimiz(&lt;span class="kwrd"&gt;string&lt;/span&gt; ad,&lt;span class="kwrd"&gt;string&lt;/span&gt; soyad,&lt;span class="kwrd"&gt;string&lt;/span&gt; yas)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _ad = ad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _soyad = soyad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _yas = yas;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
G&amp;ouml;r&amp;uuml;ld&amp;uuml;ğ&amp;uuml; gibi struct tanımlamaları class&amp;#39;lara benzemektedir.Programlama sırasında oluşturduğumuz Struct&amp;#39;ı tanımlamak i&amp;ccedil;in &lt;u&gt;new&lt;/u&gt; anahtar kelimesi kullanılır.new anahtar s&amp;ouml;zc&amp;uuml;ğ&amp;uuml; ile tanımlanınca bizim yazmış olduğumuz yapıcı metodu veya varsayılan yapıcı metodu &amp;uuml;zerinden işlem yapabiliriz.Fakat class&amp;#39;lardan farklı olarak new anahtar s&amp;ouml;zc&amp;uuml;ğ&amp;uuml; kullanmadan da struct&amp;#39;ımız &amp;uuml;zerinden nesne tanımlanabilir.Nesneyi varsayılan yapıcı metot ile tanımlarsak struct&amp;#39;ımızdaki alanlara otomatik olarak varsayılan değerle atanır.Yani &amp;ouml;rnek vermek gerekirse int bir alana 0&amp;#39;ın atanması gibi !.
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Yapimiz personel1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; Yapimiz();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(personel1._yas);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(personel1._ad);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;struct&lt;/span&gt; Yapimiz&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _ad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _soyad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; _yas;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Yukarıdaki kodun ekran &amp;ccedil;ıksında ilk ekrana yazılan değer 0 ve ikinci değerde null olduğundan ekranda g&amp;ouml;z&amp;uuml;kmeyecektir.Parametre &amp;uuml;zerinden biz değer atamadığımızdan default değerler verilmiştir.
&lt;/p&gt;
&lt;p&gt;
Class ile Struct arasındaki diğer fark ise yapıların t&amp;uuml;retmeye destek vermediğidir.Class&amp;#39;lar bildiğiniz gibi kalıtıma destek vererek kalıtıldığı sınıfın belirlenmiş &amp;ouml;zellikleri &amp;uuml;zerinden işlem yapabiliyordu.&amp;Ouml;rneğin aşağıdaki şekilde Yapimiz Struct&amp;#39;ımızı PersonelBaseStruct adındaki struct&amp;#39;tan kalıtmak istediğimizde derleme aşamasında hata alarak bu işlemi ger&amp;ccedil;ekleştiremeyiz.
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;struct&lt;/span&gt; Yapimiz:PersonelBaseStruct&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _ad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _soyad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; _yas;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
İ&amp;ccedil;erisinde &amp;ouml;zellikleri ve parametreli yapıcı metodu bulunan bir struct tanımlayıp programlama sırasında nesne tanımlayıp varsayılan yapıcı metodun parametrelerine değerleri verip yapımızı kullanarak atadığımız değeri ekrana yazdıralım.
&lt;/p&gt;
&lt;div class="code"&gt;&lt;p&gt;
&lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Yapimiz personel1 = &lt;span class="kwrd"&gt;new&lt;/span&gt; Yapimiz(&amp;quot;Serhat&amp;quot;, &amp;quot;Taş&amp;quot;, 20);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;Ad:{0}\nSoyad:{1}\nYaş:{2}&amp;quot;,personel1.Ad,personel1.Soyad,personel1.Yas);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadLine();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;struct&lt;/span&gt; Yapimiz&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _ad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _soyad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; _yas;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Ad&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _ad; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { _ad = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Soyad&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _soyad; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { _soyad = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Yas&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _yas; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { _yas = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;public&lt;/span&gt; Yapimiz(&lt;span class="kwrd"&gt;string&lt;/span&gt; ad,&lt;span class="kwrd"&gt;string&lt;/span&gt; soyad,&lt;span class="kwrd"&gt;int&lt;/span&gt; yas)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _ad = ad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _soyad = soyad;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _yas = yas;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;
Yukarıdaki program &amp;ccedil;alıştığında yapımızın &amp;ouml;zelliklerini kullanarak verilerimizi ekrana yazabiliriz. 
&lt;/p&gt;
&lt;p&gt;
Bu makalemizde Struct kavramını kısaca anlatmak istedim.Faydalı olması dileğiyle iyi &amp;ccedil;alışmalar :)
&lt;/p&gt;
&lt;p&gt;
Serhat TAŞ 
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/serhat/~4/LjcUYv-asdA" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/serhat/~3/LjcUYv-asdA/post.aspx</link>
      <author>serhattas1989.nospam@nospam.gmail.com (Serhat)</author>
      <comments>http://www.serhattas.net/post/2009/01/21/Yapc4b1lar-(Structs).aspx#comment</comments>
      <guid isPermaLink="false">http://www.serhattas.net/post.aspx?id=73fce1b6-fd13-425f-af24-744a90a4cd0a</guid>
      <pubDate>Wed, 21 Jan 2009 10:44:00 +0300</pubDate>
      <category>C#</category>
      <dc:publisher>Serhat</dc:publisher>
      <pingback:server>http://www.serhattas.net/pingback.axd</pingback:server>
      <pingback:target>http://www.serhattas.net/post.aspx?id=73fce1b6-fd13-425f-af24-744a90a4cd0a</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.serhattas.net/trackback.axd?id=73fce1b6-fd13-425f-af24-744a90a4cd0a</trackback:ping>
      <wfw:comment>http://www.serhattas.net/post/2009/01/21/Yapc4b1lar-(Structs).aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.serhattas.net/syndication.axd?post=73fce1b6-fd13-425f-af24-744a90a4cd0a</wfw:commentRss>
    <feedburner:origLink>http://www.serhattas.net/post.aspx?id=73fce1b6-fd13-425f-af24-744a90a4cd0a</feedburner:origLink></item>
  <media:rating>adult</media:rating></channel>
</rss>
