<?xml version="1.0" encoding="iso-8859-9" ?>
<?xml-stylesheet type="text/xsl" href="RSS_xslt_style.asp" version="1.0" ?>
<rss version="2.0" xmlns:WebWizForums="http://syndication.webwizguide.com/rss_namespace/">
 <channel>
  <title>Datakent Forum : C# 7 deki bazı yenilikler ( Preview )</title>
  <link>http://forum.datakent.com/</link>
  <description>XML içerik linki; Datakent Forum : C# &amp; ASP.NET : C# 7 deki bazı yenilikler ( Preview )</description>
  <pubDate>Sat, 25 Apr 2026 17:08:44 +0000</pubDate>
  <lastBuildDate>Tue, 20 Sep 2016 20:38:41 +0000</lastBuildDate>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Web Wiz Forums 9.54</generator>
  <ttl>360</ttl>
  <WebWizForums:feedURL>forum.datakent.com/RSS_post_feed.asp?TID=2905</WebWizForums:feedURL>
  <image>
   <title>Datakent Forum</title>
   <url>http://forum.datakent.com/forum_images/datakent.com_forums.png</url>
   <link>http://forum.datakent.com/</link>
  </image>
  <item>
   <title>C# 7 deki bazı yenilikler ( Preview ) : e&#287;er VS 15&amp;#039;i kurarken &amp;#034;Windows...</title>
   <link>http://forum.datakent.com/forum_posts.asp?TID=2905&amp;PID=5811#5811</link>
   <description>
    <![CDATA[<strong>Yazar:</strong> <a href="http://forum.datakent.com/member_profile.asp?PF=1" rel="nofollow">murat turan</a><br /><strong>Konu:</strong> 2905<br /><strong>Gönderim Zamanı:</strong> 20.Eylül.2016 Saat 20:38<br /><br />eğer VS 15'i kurarken "Windows 7 SP1 requires KB2952664" gibi bir hata alırsanız;<br><br>eğer sisteminiz 32Bit (x86) ise <br><br><b>%windir%\system32</b>&nbsp;&nbsp; klasörüne "<b>dismapi.dll</b>" adında boş bir DOSYA yaratınız.<br><br>eğer 64Bit (x64) bir sistem kullanıyorsanız aynı dosyayı <b>%windir%\SysWow64</b>&nbsp; klasörüne oluşturunuz.]]>
   </description>
   <pubDate>Tue, 20 Sep 2016 20:38:41 +0000</pubDate>
   <guid isPermaLink="true">http://forum.datakent.com/forum_posts.asp?TID=2905&amp;PID=5811#5811</guid>
  </item> 
  <item>
   <title>C# 7 deki bazı yenilikler ( Preview ) :   Yak&#305;nda &#231;&#305;kacak olan Visual...</title>
   <link>http://forum.datakent.com/forum_posts.asp?TID=2905&amp;PID=5810#5810</link>
   <description>
    <![CDATA[<strong>Yazar:</strong> <a href="http://forum.datakent.com/member_profile.asp?PF=1" rel="nofollow">murat turan</a><br /><strong>Konu:</strong> 2905<br /><strong>Gönderim Zamanı:</strong> 20.Eylül.2016 Saat 11:48<br /><br /><font size="4">Yakında çıkacak olan Visual Studio 15'in yeni sürümü içerisinde bulunacak olan C# 7 serisinde şahsen sevdiğim bazı özellikler.<br><br><br>aşağıda göreceğiniz üzere ön tanım olmaksızın değişken tanımı. Eski serilerde<b> int x, int y;</b> şeklinde üst satırda tanım yapmak gerekiyordu.<br></font><pre><font size="4"><span ="pl-k"="">public</span> <span ="pl-k"="">void</span> PrintCoordinates(Point p){    p.GetCoordinates(out <b><span ="pl-k"="">int</span> </b>x, out <b><span ="pl-k"="">int</span> </b>y);    WriteLine($<span ="pl-s"=""><span ="pl-pds"="">"</span>({x}, {y})<span ="pl-pds"="">"</span></span>);}</font></pre><font size="4"><br>diğer bir yenilik fonksiyon veya procedur için OUT parametresinin iptal edilebilmesi. aşağıda göreceğiniz üzere "GetCoordinates"&nbsp; iki parametreli bir yordamdır ve ikinci parametresi <b>out *</b> ile es geçilmiştir.<br><br></font><pre><font size="4">p.GetCoordinates(out <span ="pl-k"="">int</span> x, out *); <span ="pl-c"="">// sadece x değişkeniyle dönecek değeri kullanmak istiyoruz.</span></font></pre><font size="4"><br><br>diğer bir yenilik şart içerisinde tip kontrolü ve belirlenen tipte değişkene otomatik dönüşüm.<br>"o" değişkeni object türünde gelmektedir ve ikinci IF kısmında "o" nun INT olup olmadığı kontrol ediliyor ve akabinde "i" değişkenine "int" olarak atanabiliyor.<br></font><pre><font size="4"><span ="pl-k"="">public</span> <span ="pl-k"="">void</span> PrintStars(<span ="pl-k"="">object</span> o){    <span ="pl-k"="">if</span> (o <span ="pl-k"="">is</span> <span ="pl-c1"="">null</span>) <span ="pl-k"="">return</span>;     <span ="pl-c"="">// constant pattern "null"</span>    <span ="pl-k"="">if</span> (!(o <span ="pl-k"="">is</span> <span ="pl-k"="">int</span> i)) <span ="pl-k"="">return</span>; <span ="pl-c"="">// type pattern "int i"</span>    WriteLine(<span ="pl-k"="">new</span> string(<span ="pl-s"=""><span ="pl-pds"="">'</span>*<span ="pl-pds"="">'</span></span>, i));}</font></pre><font size="4"><br><br>ve şahsen geldiğine en çok sevindiğim özellik ise Apple'ın Swift'inde mevcut olup Apple'ın bizde var onda yok diye övündüğü bir özellik :)&nbsp; <b>Tuples&nbsp; </b>yani çoklu değişken dönüşü<br>normalde çoklu değişken dönüşü yapmak istediğinizde bunu bir CLASS yaratıp orayla ilintilemeniz gerekirdi. Mesela düşünün bir fonksiyon yazdınız ve geriye "int x, int y" iki değer döndürecek. Bunun için bu iki değişkeni içeren bir CLASS yapıp fonksiyonun dönüşünüde bu CLASS tipinde yapardık değil mi? artık buna gerek kalmıyor. şöyle ki:<br><br></font><pre><font size="4">(<span ="pl-k"="">string</span>, <span ="pl-k"="">string</span>, <span ="pl-k"="">string</span>) LookupName(<span ="pl-k"="">long</span> id) <span ="pl-c"="">// tuple return type</span>{    ... <span ="pl-c"="">// retrieve first, middle and last from data storage</span>    <span ="pl-k"="">return</span> (first, middle, last); <span ="pl-c"="">// tuple literal</span>}</font></pre><font size="4">//kullanım olarak<br></font><pre><font size="4"><span ="pl-k"="">var</span> names = LookupName(id);WriteLine($<span ="pl-s"=""><span ="pl-pds"="">"</span>found {names.Item1} {names.Item3}.<span ="pl-pds"="">"</span></span>);</font></pre><font size="4">ve elbette dönüş tipleri isim içerebilir. Şöyle ki:<br><br></font><pre><font size="4">(<span ="pl-k"="">string</span> first, <span ="pl-k"="">string</span> middle, <span ="pl-k"="">string</span> last) LookupName(<span ="pl-k"="">long</span> id) <span ="pl-c"="">// tuple elements have names</span></font></pre><font size="4">ve tekrar kullanımına bakcak olursak<br><br></font><pre><font size="4"><span ="pl-k"="">var</span> names = LookupName(id);WriteLine($<span ="pl-s"=""><span ="pl-pds"="">"</span>found {names.first} {names.last}.<span ="pl-pds"="">"</span></span>);</font></pre><font size="4"><br>bu yapıdaki fonskyonlar için "var" ile tanım yapmadan, dönüş tipi biliniyorsa direkt değişken gruplarıylada dönüş değerleri okunabilir.<br><br></font><pre><font size="4">(<span ="pl-k"="">string</span> first, <span ="pl-k"="">string</span> middle, <span ="pl-k"="">string</span> last) = LookupName(id1); <span ="pl-c"="">// deconstructing declaration</span>WriteLine($<span ="pl-s"=""><span ="pl-pds"="">"</span>found {first} {last}.<span ="pl-pds"="">"</span></span>);</font></pre><font size="4"><br>Tuples için diğer dönüş formatları:<br><br></font><pre><font size="4">(<span ="pl-k"="">var</span> first, <span ="pl-k"="">var</span> middle, <span ="pl-k"="">var</span> last) = LookupName(id1); <span ="pl-c"="">// var inside<br><br></span></font></pre><pre><font size="4"><span ="pl-k"="">var</span> (first, middle, last) = LookupName(id1); <span ="pl-c"="">// var outside</span></font></pre><pre><font size="4"><br>(first, middle, last) = LookupName(id1); <span ="pl-c"="">// deconstructing assignment</span></font></pre><font size="4"><br>ve diğer bir yenilik ise yerel fonksiyon. Pascal (delphi) de yıllardır mevcut olan yordam içi yordam yapısı c# 7 ile gelmektedir. Şöyle ki;<br>bakılacağı üzere "Fibonacci" ana yordamdır. İçerisindeki "Fib" ise içsel yordamdırç&nbsp; <br></font><pre><font size="4"><span ="pl-k"="">public</span> <span ="pl-k"="">int</span> <b>Fibonacci</b>(<span ="pl-k"="">int</span> x){    <span ="pl-k"="">if</span> (x &lt; <span ="pl-c1"="">0</span>) <span ="pl-k"="">throw</span> <span ="pl-k"="">new</span> ArgumentException(<span ="pl-s"=""><span ="pl-pds"="">"</span>Less negativity please!<span ="pl-pds"="">"</span></span>, <span ="pl-k"="">nameof</span>(x));    <span ="pl-k"="">return</span> Fib(x).current;    (<span ="pl-k"="">int</span> current, <span ="pl-k"="">int</span> previous) <b>Fib</b>(<span ="pl-k"="">int</span> i)    {        <span ="pl-k"="">if</span> (i == <span ="pl-c1"="">0</span>) <span ="pl-k"="">return</span> (<span ="pl-c1"="">1</span>, <span ="pl-c1"="">0</span>);        <span ="pl-k"="">var</span> (p, pp) = Fib(i - <span ="pl-c1"="">1</span>);        <span ="pl-k"="">return</span> (p + pp, p);    }}</font></pre><font size="4"><br><br><br>diğer bir yenilik ise "Ref returns" biraz c/c++ daki pointer olarak tanımlanmış değişken gibi denilebilir. şöyle ki;<br>Find "ref" dönüşü sağlayan bir fonksiyon<br></font><pre><font size="4"><span ="pl-k"="">public</span> ref <span ="pl-k"="">int</span> <b>Find</b>(<span ="pl-k"="">int</span> number, <span ="pl-k"="">int</span>&#091;&#093; numbers){    <span ="pl-k"="">for</span> (<span ="pl-k"="">int</span> i = <span ="pl-c1"="">0</span>; i &lt; numbers.Length; i++)    {        <span ="pl-k"="">if</span> (numbers<em> == number)         {            <span ="pl-k"="">return</span> ref numbers<em>; <span ="pl-c"="">// return the storage location, not the value</span>        }    }    <span ="pl-k"="">throw</span> <span ="pl-k"="">new</span> IndexOutOfRangeException($<span ="pl-s"=""><span ="pl-pds"="">"</span>{nameof(number)} not found<span ="pl-pds"="">"</span></span>);}<span ="pl-k"="">int</span>&#091;&#093; array = { <span ="pl-c1"="">1</span>, <span ="pl-c1"="">15</span>, -<span ="pl-c1"="">39</span>, <span ="pl-c1"="">0</span>, <span ="pl-c1"="">7</span>, <span ="pl-c1"="">14</span>, -<span ="pl-c1"="">12</span> };ref <span ="pl-k"="">int</span> place = ref Find(<span ="pl-c1"="">7</span>, array); <span ="pl-c"="">// place değişkenine 7'nin olduğu lokasyon yani dördüncü hücre atanıyor!!! burası önemli</span> zira değeri değil !!!place = <span ="pl-c1"="">9</span>; <span ="pl-c"="">// dördüncü hücredeki 7 değeri 9 yapılıyor. yani "array</span>" değişkenine genel bir bakış yaptığınızda değerin array'da değiştiğini görebilirsiniz.WriteLine(array&#091;<span ="pl-c1"="">4</span>&#093;); <span ="pl-c"="">// array'ın dördüncü değerini yazdırıyoruz ki çıktı 9'dur.</span></em></em></font></pre><em><em><font size="4"><br><br>ve visual studio enterprise 15 preview 4'ü indirmek için <a href="https://www.visualstudio.com/en-us/downloads/visual-studio-next-downloads-vs.aspx" target="_blank">tıklayınız...</a><br><br><br><br><br><br><br><br></font></em></em><span style="font-size:10px"><br /><br />Düzenleyen murat turan - 16.Kasim.2016 Saat 13:12</span>]]>
   </description>
   <pubDate>Tue, 20 Sep 2016 11:48:52 +0000</pubDate>
   <guid isPermaLink="true">http://forum.datakent.com/forum_posts.asp?TID=2905&amp;PID=5810#5810</guid>
  </item> 
 </channel>
</rss>