﻿
{"id":19389,"date":"2020-11-23T22:09:39","date_gmt":"2020-11-23T22:09:39","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=19389"},"modified":"2020-11-23T22:09:51","modified_gmt":"2020-11-23T22:09:51","slug":"c-9-0-target-typed-new-expressions","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/c-9-0-target-typed-new-expressions\/","title":{"rendered":"C# 9.0 &#8211; Target-Typed New Expressions"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>C# 9.0 s\u00fcr\u00fcm\u00fcnde, nesne olu\u015fum s\u00fcre\u00e7lerinde semantik a\u00e7\u0131dan inan\u0131lmaz kolayl\u0131k sa\u011flayan <em>Target-Typed New Expressions<\/em> \u00f6zelli\u011fini duyurmu\u015ftur. Bu \u00f6zellik, new operat\u00f6r\u00fc ile t\u00fcr\u00fc bilinen bir class&#8217;tan nesne yahut bir struct&#8217;tan de\u011fer \u00fcretilirken constructor \u00e7a\u011fr\u0131m\u0131 esnas\u0131nda yeniden tip belirtilmesine gerek kalmaks\u0131z\u0131n kodu in\u015fa etmemizi sa\u011flamakta ve \u00f6zellikle generic t\u00fcrlerde biz developer&#8217;lara olduk\u00e7a kolay kodlama imkan\u0131 sa\u011flamaktad\u0131r.<\/p>\n<p>Misal;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class MyClass { }\r\n    struct MyStruct { }\r\n    record MyRecord { }\r\n<\/pre>\n<p>\u015feklinde tasarlanan veri modellerinden nesne ve de\u011fer \u00fcretebilmek i\u00e7in;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            MyClass myClass = new MyClass();\r\n            MyStruct myStruct = new MyStruct();\r\n            MyRecord record = new MyRecord();\r\n<\/pre>\n<p>\u015feklinde \u00e7al\u0131\u015fmam\u0131z gerekmekteydi.<\/p>\n<p>Dikkat ederseniz burada \u00fcretilecek nesne yahut de\u011fer, i\u015faretlenece\u011fi referans\u0131n t\u00fcr\u00fc sayesinde bilinmekte ve b\u00f6ylece ayn\u0131 t\u00fcr\u00fcn tekrar constructer yan\u0131nda belirtilmesi l\u00fczumsuz bir kod maliyetine sebebiyet vermektedir.<\/p>\n<div style=\"text-align:center;\">\u2717<code style=\"color:green;font-size:17px;\">Type type = new <span style=\"color:red;\">Type<\/span>();<\/code><\/div>\n<p>Tabi ki de polimorfizm nimetinden faydalan\u0131p hiyerar\u015fik bir modelleme yap\u0131lmad\u0131\u011f\u0131 ve direkt referans t\u00fcr\u00fcne kar\u015f\u0131l\u0131k ayn\u0131 t\u00fcrde bir nesne veya de\u011fer tutuldu\u011fu s\u00fcrece buradaki t\u00fcr\u00fcn new operat\u00f6r\u00fc e\u015fli\u011finde belirtilmesi bizler a\u00e7\u0131s\u0131ndan maliyet olarak yorumlanmaktad\u0131r.<\/p>\n<p>Dolay\u0131s\u0131yla C# 9.0 ile gelen target-typed new expressions \u00f6zelli\u011fi ile bu veri modellerinden a\u015fa\u011f\u0131daki gibi new ile nesne ve de\u011ferler \u00fcretilebilmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            MyClass myClass = new();\r\n            MyStruct myStruct = new();\r\n            MyRecord record = new();\r\n<\/pre>\n<div style=\"text-align:center;\">\u2713<code style=\"color:green;font-size:17px;\">Type type = new();<\/code><\/div>\n<p>Hakeza a\u015fa\u011f\u0131daki gibi bir generic modelden nesne \u00fcretilmeye \u00e7al\u0131\u015f\u0131ld\u0131\u011f\u0131nda yahut generic bir koleksiyon kullan\u0131ld\u0131\u011f\u0131nda \u00e7ekti\u011fimiz \u00e7ileyi ne kadar kolayla\u015ft\u0131rd\u0131\u011f\u0131na hep beraber \u015fahit olmaktay\u0131z.<\/p>\n<p><u>Eski<\/u>;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            MyClass&lt;string&gt; myClass = new MyClass&lt;string&gt;();\r\n            List&lt;string&gt; lists = new List&lt;string&gt;();\r\n            Dictionary&lt;int, char&gt; keyValuePairs = new Dictionary&lt;int, char&gt;();\r\n<\/pre>\n<p><u>Yeni<\/u>;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            MyClass&lt;string&gt; myClass = new();\r\n            List&lt;string&gt; lists = new();\r\n            Dictionary&lt;int, char&gt; keyValuePairs = new();\r\n<\/pre>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, C# 9.0 s\u00fcr\u00fcm\u00fcnde, nesne olu\u015fum s\u00fcre\u00e7lerinde semantik a\u00e7\u0131dan inan\u0131lmaz kolayl\u0131k sa\u011flayan Target-Typed New Expressions \u00f6zelli\u011fini duyurmu\u015ftur. Bu \u00f6zellik, new operat\u00f6r\u00fc ile t\u00fcr\u00fc bilinen bir class&#8217;tan nesne yahut bir struct&#8217;tan de\u011fer \u00fcretilirken constructor \u00e7a\u011fr\u0131m\u0131&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":19209,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,3928],"tags":[3929,3953,3952],"class_list":["post-19389","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","category-c-9-0","tag-c-9-0","tag-c-9-0-target-typed-new-expressions","tag-target-typed-new-expressions"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/19389","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=19389"}],"version-history":[{"count":7,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/19389\/revisions"}],"predecessor-version":[{"id":19396,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/19389\/revisions\/19396"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/19209"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=19389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=19389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=19389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}