https://buraksenyurt.com/Burak Selim Şenyurt - C# 4.02011-10-03T10:31:39+00:00Matematik Mühendisi Bir Bilgisayar Programcısının NotlarıBurak Selim SenyurtBlogEngine.Net Syndication Generatorhttps://buraksenyurt.com/opml.axdBurak Selim SenyurtMatematik Mühendisi Bir Bilgisayar Programcısının Notlarıtr-TRBurak Selim Şenyurt0.0000000.000000https://buraksenyurt.com/post/Karmasik-Degil-Son-Derece-BasitKarmaşık Değil Son Derece Basit2011-09-29T06:50:00+00:00bsenyurt<p><a href="https://buraksenyurt.com/pics/experience.jpg"><img style="background-image: none; margin: 4px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border: 0px;" title="experience" src="/pics/experience_thumb.jpg" alt="experience" width="244" height="304" align="right" border="0" /></a>Merhaba Arkadaşlar,</p>
<p>Kurumsal eğitim vermenin en güzel yanlarından birisi de, gelenlerin istekleri ve talepleri doğrultusunda gerçek hayat örneklerini daha kolay bir şekilde kodlayabilmeniz ve gösterebilmenizdir.</p>
<p>Söz gelimi geçtiğimiz hafta içerisinde vermeye başladığım ve makaleyi yazdığım tarih itibariyle devam etmekte olan bir eğitim sırasında, <strong>Binary</strong> ve <strong>XML Serileştirme</strong> konularını anlatırken, sahip olduğumuz dil ve framework materyallerinden bazılarını iç içe ve ne kadar etkili kullanabildiğimizi gördük <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style: none;" src="/pics/wlEmoticon-winkingsmile_66.png" alt="Göz kırpan gülümseme" /> Bu durumdan esinlenerek sizlere de bir gerçek hayat örneği aktarmaya çalışmak isterim.</p>
<p>İlk önce ne yapacağımızı belirtmem gerekiyor ama bunu en sona bırakmak ve ne yapmış olduğumuzu o zaman göstermek<em>(aslında sizin anladığınızı görmek)</em> arzusundayım. Öncelikli olarak aşağıdaki şekilde görülen <strong>Solution</strong> yapısını oluşturarak işe başlayabiliriz. Tabi ki bu yapı bizim test çözümümüz olarak tasarlanmıştır.</p>
<p><a href="https://buraksenyurt.com/pics/bei_3.gif"><img style="background-image: none; margin: 4px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="bei_3" src="/pics/bei_3_thumb.gif" alt="bei_3" width="275" height="258" border="0" /></a></p>
<p><strong>Common</strong> ve <strong>DomainLibrary</strong> isimli projelerimiz birer <strong>Class Library</strong> iken <strong>TestApp</strong> tahmin edileceği üzere bir <strong>Console</strong> uygulamasıdır. Şimdi de <strong>DomainLibrary</strong> içeriğini aşağıdaki <strong>Class Diagram</strong>’ da olduğu gibi yapılandıralım.</p>
<p><a href="https://buraksenyurt.com/pics/bei_4.gif"><img style="background-image: none; margin: 4px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="bei_4" src="/pics/bei_4_thumb.gif" alt="bei_4" width="477" height="327" border="0" /></a></p>
<p><strong>ISerializationRule.cs;</strong></p>
<pre class="brush:csharp;auto-links:false;toolbar:false" contenteditable="false">namespace DomainLibrary
{
public interface ISerializationRule
{
}
}</pre>
<p><strong>Product.cs;</strong></p>
<pre class="brush:csharp;auto-links:false;toolbar:false" contenteditable="false">using System;
namespace DomainLibrary
{
[Serializable]
public class Product
:ISerializationRule
{
public int Id { get; set; }
public string Name { get; set; }
public int CategoryId { get; set; }
public decimal ListPrice { get; set; }
}
}</pre>
<p><strong>Category.cs;</strong></p>
<pre class="brush:csharp;auto-links:false;toolbar:false" contenteditable="false">using System;
namespace DomainLibrary
{
[Serializable]
public class Category
:ISerializationRule
{
public int Id { get; set; }
public string Name { get; set; }
}
}</pre>
<p><strong>ISerializationRule</strong> interface tipini uygulamakta olan <strong>Category</strong> ve <strong>Product</strong> isimli iki sınıfımız bulunduğunu görmekteyiz. <strong>ISerializationRule</strong> arayüzü herhangibir kural bildirimi yapmasa bile ilerleyen bölümlerde çok kritik bir görevi üstlenecektir <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style: none;" src="/pics/wlEmoticon-winkingsmile_66.png" alt="Göz kırpan gülümseme" /> </p>
<p>Şimdi de <strong>Common</strong> isimli sınıf kütüphanemiz içerisine aşağıdaki <strong>Operations</strong> sınıfını ve içeriğini eklediğimizi düşünelim.</p>
<p><a href="https://buraksenyurt.com/pics/bei_5.gif"><img style="background-image: none; margin: 4px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="bei_5" src="/pics/bei_5_thumb.gif" alt="bei_5" width="374" height="124" border="0" /></a></p>
<pre class="brush:csharp;auto-links:false;toolbar:false" contenteditable="false">using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using DomainLibrary;
namespace Common
{
public class Operations
{
public bool BinarySerialize<T>(List<T> Source, string FilePath)
where T : ISerializationRule
{
bool result = false;
try
{
using (FileStream fs = new FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.Write))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, Source);
result = true;
}
}
catch (Exception excp)
{
throw excp;
}
return result;
}
}
}</pre>
<p><img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style: none;" src="/pics/wlEmoticon-winkingsmile_66.png" alt="Göz kırpan gülümseme" /> Operations sınıfı içerisinde <strong>Binary</strong> serileştirme işlemi olan bir metod olduğunu görmektesiniz. Söz konusu metod <strong>generic</strong> olarak tasarlanmıştır. Generic olmakla kalmayıp bir de <strong>kısıtlama(Constraints)</strong> getirmiştir. Bu kısıtlamaya göre <strong>T</strong> tipinin <strong>ISerializationRule</strong> isimli arayüz tarafından taşınabilen bir referans olması şartı konulmaktadır <img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="/pics/wlEmoticon-smile_15.png" alt="Gülümseme" /> Bir başka deyişle az önce tasarlamış olduğumuz <strong>Domain</strong> yapısı içerisinde yer alan ve <strong>ISerializationRule</strong> arayüzünü uygulayan tipler için bu metodun kullanılabilmesi mümkündür. Dolayısıyla bu koşulun dışında kalan tipler için söz konusu metod kullanılamayacaktır. Sanırım bu gerçek hayat örneğinin en can alıcı noktası da burasıdır. Bizim sahip olduğumu bir <strong>Domain</strong> ile çalışabilecek <strong>generic</strong> bir serileştirme metodu geliştirmiş bulunmaktayız.</p>
<p>Metodun içeriği son derece basittir. <strong>Exception</strong> yönetimi metodu kullanan bir üst katmana bırakılmıştır<em>(catch bloğu içerisinde yaptığımız throw hareketine dikkat edin<img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style: none;" src="/pics/wlEmoticon-winkingsmile_66.png" alt="Göz kırpan gülümseme" />)</em> Diğer yandan <strong>BinaryFormatter</strong> tipinden yararlanılmış ve metoda parametre olarak gelen <strong>FilePath</strong> ile işaret edilen ve <strong>FileStream</strong> ile yazmak üzere açılan dosyaya doğru bir serileştirme işlemi gerçekleştirilmektedir.</p>
<p>Şimdi söz konusu operasyonu test edeceğimiz kod içeriğini de <strong>Console</strong> uygulamamızda aşağıdaki gibi geliştirelim.</p>
<pre class="brush:csharp;auto-links:false;toolbar:false" contenteditable="false">using System;
using System.Collections.Generic;
using System.IO;
using Common;
using DomainLibrary;
namespace TestApp
{
class Program
{
static void Main(string[] args)
{
List<Category> categories = new List<Category>()
{
new Category{ Id=1,Name="Book"},
new Category{ Id=2,Name="Music"}
};
List<Product> products = new List<Product>()
{
new Product{ Id=1,CategoryId=1, Name="Kitap 1", ListPrice=10},
new Product{ Id=2,CategoryId=1, Name="Kitap 2", ListPrice=5},
new Product{ Id=3,CategoryId=2, Name="Muzik 1", ListPrice=15},
new Product{ Id=4,CategoryId=1, Name="Kitap 3", ListPrice=3},
new Product{ Id=5,CategoryId=2, Name="Muzik 2", ListPrice=9},
new Product{ Id=6,CategoryId=1, Name="Kitap 4", ListPrice=8},
};
Operations opt = new Operations();
bool result1=opt.BinarySerialize<Product>(products, Path.Combine(Environment.CurrentDirectory, "Products.bin"));
bool result2 = opt.BinarySerialize<Category>(categories, Path.Combine(Environment.CurrentDirectory, "Categories.bin"));
if(result1)
Console.WriteLine("Products listesi binary serileştirildi");
if(result2)
Console.WriteLine("Categories listesi binary serileştirildi");
}
}
}</pre>
<p>Örneğimizde sembolik olarak <strong>Product</strong> ve <strong>Category</strong> tipinden birer koleksiyon üretilmekte ve bunlar için Binary serileştirme işlemi icra edilmektedir. Uygulamayı çalıştırdığımızda aşağıdakine benzer bir ekran çıktısı ile karşılaşırız <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style: none;" src="/pics/wlEmoticon-winkingsmile_66.png" alt="Göz kırpan gülümseme" /></p>
<p><a href="https://buraksenyurt.com/pics/bei_6.gif"><img style="background-image: none; margin: 4px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="bei_6" src="/pics/bei_6_thumb.gif" alt="bei_6" width="449" height="118" border="0" /></a></p>
<p>Tabi çıktı olarak üretilen <strong>Binary</strong> dosyaların içeriği de aşağıdaki gibi oluşturulacaktır.</p>
<p><strong>Categories.bin içeriği;</strong></p>
<p> ÿÿÿÿ DDomainLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null System.Collections.Generic.List`1[[DomainLibrary.Category, DomainLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] _items_size_version DomainLibrary.Category[] DomainLibrary.Category <br /> DomainLibrary.Category <Id>k__BackingField<Name>k__BackingField Book Music</p>
<p><strong>Products.bin içeriği;</strong></p>
<p> ÿÿÿÿ DDomainLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null €System.Collections.Generic.List`1[[DomainLibrary.Product, DomainLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] _items_size_version DomainLibrary.Product[] DomainLibrary.Product <br /> DomainLibrary.Product <Id>k__BackingField<Name>k__BackingField<CategoryId>k__BackingField<ListPrice>k__BackingField <br /> Kitap 1 10 Kitap 2 5 Muzik 1 15 <br /> Kitap 3 3 Muzik 2 9 Kitap 4 8</p>
<p>Aslında bu geliştirdiğimiz örnek ile kazandığımız bir takım avantajlar olduğunu vurgulamalıyız. Öncelikli olarak <strong>development</strong> safhasındayken <strong>Binary</strong> serileştirme işini üstlenen metoda atayabileceğimiz tipler için <strong>Business</strong> anlamda bir <strong>Domain</strong> kuralı getirmiş bulunmaktayız. Bunu metodu çağırdığımız sırada da zaten net bir şekilde görebiliriz.</p>
<p><a href="https://buraksenyurt.com/pics/bei_7.gif"><img style="background-image: none; margin: 4px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="bei_7" src="/pics/bei_7_thumb.gif" alt="bei_7" width="560" height="82" border="0" /></a></p>
<p>Dikkat edileceği üzere kırmızı kutucuk içerisinde almış olduğumuz kısım ile <strong>T</strong> tipinin <strong>ISerializationRule</strong> arayüzü tarafından taşınabilecek bir tip olması zorunluluğu geliştiriciye bildirilmiş oluyor <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style: none;" src="/pics/wlEmoticon-winkingsmile_66.png" alt="Göz kırpan gülümseme" /> Sanırım şu anda ne demek istediğimi daha net anlatabilmişimdir.</p>
<p>Geliştirdiğimiz örnek <strong>Solution</strong> içerisinde yer alan <strong>Assembly’</strong> lar arası bağları ele alarak makalemizi yavaş yavaş sonlandırmaya başlayalım. Tam olarak <strong>Assembly’</strong> larımız arası ilişki aşağıdaki şekilde görüldüğü gibidir.</p>
<p><a href="https://buraksenyurt.com/pics/bei_8.gif"><img style="background-image: none; margin: 4px 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="bei_8" src="/pics/bei_8_thumb.gif" alt="bei_8" width="442" height="233" border="0" /></a></p>
<p><strong>Generate Dependency Graph’</strong> ı seviyorummm <img class="wlEmoticon wlEmoticon-openmouthedsmile" style="border-style: none;" src="/pics/wlEmoticon-openmouthedsmile_15.png" alt="Açık ağızlı gülümseme" /></p>
<p>Peki bu çözümde neleri kullandık?</p>
<ul>
<li><strong>Generic</strong> bir <strong>metod</strong> geliştirdik.</li>
<li><strong>Generic</strong> metodda kullandığımız <strong>T</strong> tipi için <strong>generic</strong> <strong>kısıtlama(Constraint)</strong> kullandık.</li>
<li>Kendi <strong>Domain</strong> yapımızı düşündük ve bir <strong>arayüz(ISerializationRule)</strong> ile generic kısıtlama için imkan sağladık.</li>
<li><strong>BinaryFormatter</strong> tipi ile serileştirme işlemini icra ettik.</li>
<li><strong>Serileştirme</strong> hedefi olarak fiziki bir dosya bağlantısını kullandık<em>(FileStream)</em>.</li>
<li><strong>Class Diagram’</strong> ları kullanarak <strong>Domain</strong> yapımızı daha net görebildik.</li>
<li><strong>Assembly</strong> bazında <strong>Dependency Graph</strong> üreterek <strong>Assembly’</strong> larımız arası referans bağımlılıklarını da daha net görebildik.</li>
</ul>
<p>Görüldüğü üzere sahip olduğumuz .Net bilgi ve materyallerini bazı durumlarda bir araya getirip gerçek hayat senaryoları için icra ettirebiliyoruz. Tabi söz konusu senaryoya eklenebilecek daha pek çok fonksiyonellik söz konusu olabilir. İlerleyen zamanlarda başka gerçek hayat örneklerini de sizlerle paylaşmaya çalışıyor olacağım. Özellikle bu yazıda katılımcı arkadaşlarımızın oldukça büyük emeği var. Kendilerine de çok teşekkür ediyorum. Tekrardan görüşünceye dek hepinize mutlu günler dilerim <img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="/pics/wlEmoticon-smile_15.png" alt="Gülümseme" /></p>
<p><a href="https://buraksenyurt.com/pics/2011%2f9%2fGercekHayatOrnekleri.rar">GercekHayatOrnekleri.rar (58,66 kb)</a></p>2011-09-29T06:50:00+00:00genericgeneric methodsinterfacedomainbinary serializationbsenyurtSöz gelimi geçtiğimiz hafta içerisinde vermeye başladığım ve makaleyi yazdığım tarih itibariyle devam etmekte olan bir eğitim sırasında, Binary ve XML Serileştirme konularını anlatırken, sahip olduğumuz dil ve framework materyallerinden bazılarını iç içe ve ne kadar etkili kullanabildiğimizi gördük Göz kırpan gülümsemehttps://buraksenyurt.com/pingback.axdhttps://buraksenyurt.com/post.aspx?id=f114b35f-ce78-4e2f-b863-548a17aea39e0https://buraksenyurt.com/trackback.axd?id=f114b35f-ce78-4e2f-b863-548a17aea39ehttps://buraksenyurt.com/post/Karmasik-Degil-Son-Derece-Basit#commenthttps://buraksenyurt.com/syndication.axd?post=f114b35f-ce78-4e2f-b863-548a17aea39ehttps://buraksenyurt.com/post/Tek-Fotoluk-Ipucu-17-(Query-ile-Daha-iyi-Kodlama)Tek Fotoluk İpucu-17 (Query ile Daha Şık Kodlama)2011-07-11T21:54:00+00:00bsenyurt<p>Merhaba Arkadaşlar,</p>
<p>LINQ sorgularını sadece sorgulamak için kullandığımızı da nereden çıkartıyorsunuz <img class="wlEmoticon wlEmoticon-smile" style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" src="http://www.buraksenyurt.com/pics/wlEmoticon-smile_9.png" alt="Smile" /> Aslında onları kodlarımızı daha şık hale getirmek için de kullanabiliriz? Nasıl mı? İşte küçük bir örnek <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" src="http://www.buraksenyurt.com/pics/wlEmoticon-winkingsmile_35.png" alt="Winking smile" /></p>
<p><a href="http://www.buraksenyurt.com/pics/PhotoTrick17.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 4px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="PhotoTrick17" src="http://www.buraksenyurt.com/pics/PhotoTrick17_thumb.png" border="0" alt="PhotoTrick17" width="641" height="705" /></a></p>
<p><a href="http://www.buraksenyurt.com/pics/2011%2f7%2fShortCodes.rar">ShortCodes.rar (22,69 kb)</a></p>2011-07-11T21:54:00+00:00c#linqenumerablebsenyurthttps://buraksenyurt.com/pingback.axdhttps://buraksenyurt.com/post.aspx?id=4fd2abb3-4486-4fb4-aacd-36450dbfae4c3https://buraksenyurt.com/trackback.axd?id=4fd2abb3-4486-4fb4-aacd-36450dbfae4chttps://buraksenyurt.com/post/Tek-Fotoluk-Ipucu-17-(Query-ile-Daha-iyi-Kodlama)#commenthttps://buraksenyurt.com/syndication.axd?post=4fd2abb3-4486-4fb4-aacd-36450dbfae4chttps://buraksenyurt.com/post/Tek-Fotoluk-Ipucu-16-(Dynamic-Var)Tek Fotoluk İpucu-16 (Dynamic Var)2011-07-10T21:41:00+00:00bsenyurt<p>Merhaba Arkadaşlar,</p>
<p>LINQ tarafında isimsiz tipleri(Anonymous Types) oldukça sık kullanmaktayız. Ancak isimsiz tiplerin metodlara parametre olarak geçirilemediğini de biliyoruz <img class="wlEmoticon wlEmoticon-sadsmile" style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" src="http://www.buraksenyurt.com/pics/wlEmoticon-sadsmile_4.png" alt="Sad smile" /> Çünkü bu tipler derleyici tarafından üretiliyorlar. Ama üzülmeyin. Çünkü elimizde 4.0 ile gelen dynamic anahtar kelimesi var. Peki nasıl kullanırız? <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" src="http://www.buraksenyurt.com/pics/wlEmoticon-winkingsmile_34.png" alt="Winking smile" /></p>
<p><a href="http://www.buraksenyurt.com/pics/PhotoTrick16New.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 4px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="PhotoTrick16New" src="http://www.buraksenyurt.com/pics/PhotoTrick16New_thumb.png" border="0" alt="PhotoTrick16New" width="639" height="763" /></a></p>
<p><a href="http://www.buraksenyurt.com/pics/2011%2f7%2fDynamicVar.rar">DynamicVar.rar (26,49 kb)</a></p>2011-07-10T21:41:00+00:00c#c# 3.0c# 4.0c# temelleridynamicvardynamic language runtimebsenyurthttps://buraksenyurt.com/pingback.axdhttps://buraksenyurt.com/post.aspx?id=37d8655d-e7f3-4917-9047-58611862e6111https://buraksenyurt.com/trackback.axd?id=37d8655d-e7f3-4917-9047-58611862e611https://buraksenyurt.com/post/Tek-Fotoluk-Ipucu-16-(Dynamic-Var)#commenthttps://buraksenyurt.com/syndication.axd?post=37d8655d-e7f3-4917-9047-58611862e611https://buraksenyurt.com/post/Tek-Fotoluk-Ipucue280939-(Stopwatch-ile-sure-olcumu)Tek Fotoluk İpucu – 9 (Stopwatch ile süre ölçümü)2011-06-29T00:58:00+00:00bsenyurt<p>Merhaba Arkadaşlar,</p>
<p>Bazen yazdığımız kod parçalarının işlem sürelerini hesaplama ihtiyacı duyarız. Bu anlamda en çok kullanılan yöntemlerden birisi DateTime ve TimeSpan tiplerini ele almakta iken gerçekte en efektif olanı Stopwatch sınıfını değerlendirmektir. Nasıl mı? <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" src="http://www.buraksenyurt.com/pics/wlEmoticon-winkingsmile_27.png" alt="Winking smile" /></p>
<p><a href="http://www.buraksenyurt.com/pics/PhotoTrick9.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 4px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="PhotoTrick9" src="http://www.buraksenyurt.com/pics/PhotoTrick9_thumb.png" border="0" alt="PhotoTrick9" width="568" height="564" /></a></p>
<p><a href="http://www.buraksenyurt.com/pics/2011%2f6%2fProcessDuration.rar">ProcessDuration.rar (22,01 kb)</a></p>2011-06-29T00:58:00+00:00c#.net framework.net framework 4.0stopwatchbsenyurthttps://buraksenyurt.com/pingback.axdhttps://buraksenyurt.com/post.aspx?id=387b5aee-b9a2-47d7-bae9-97048394dc321https://buraksenyurt.com/trackback.axd?id=387b5aee-b9a2-47d7-bae9-97048394dc32https://buraksenyurt.com/post/Tek-Fotoluk-Ipucue280939-(Stopwatch-ile-sure-olcumu)#commenthttps://buraksenyurt.com/syndication.axd?post=387b5aee-b9a2-47d7-bae9-97048394dc32https://buraksenyurt.com/post/Tek-Fotoluk-Ipucu-5Tek Fotoluk İpucu - 5 (Rastgele Sıralı Generic List Koleksiyonu)2011-06-23T21:15:00+00:00bsenyurt<p>Merhaba Arkadaşlar,</p>
<p>Elinizde List tipinden bir koleksiyon var ve içerisindeki nesnelerden rastgele sırada yeni bir liste kullanmak istiyorsunuz. Ne yaparsınız? İşte cevabı <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" src="http://www.buraksenyurt.com/pics/wlEmoticon-winkingsmile_23.png" alt="Winking smile" /></p>
<p><a href="http://www.buraksenyurt.com/pics/PhotoTip5.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 4px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="PhotoTip5" src="http://www.buraksenyurt.com/pics/PhotoTip5_thumb.png" border="0" alt="PhotoTip5" width="630" height="568" /></a></p>
<p><a href="http://www.buraksenyurt.com/pics/2011%2f6%2fRandomList.rar">RandomList.rar (22,53 kb)</a></p>2011-06-23T21:15:00+00:00c#c# 3.0c# 4.0c# temellerilinqlistgeneric listcollectionsbsenyurthttps://buraksenyurt.com/pingback.axdhttps://buraksenyurt.com/post.aspx?id=fdd9857a-d6d3-4fec-b286-b77c235f3ecf2https://buraksenyurt.com/trackback.axd?id=fdd9857a-d6d3-4fec-b286-b77c235f3ecfhttps://buraksenyurt.com/post/Tek-Fotoluk-Ipucu-5#commenthttps://buraksenyurt.com/syndication.axd?post=fdd9857a-d6d3-4fec-b286-b77c235f3ecf