﻿
{"id":26131,"date":"2023-01-31T04:59:53","date_gmt":"2023-01-31T04:59:53","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=26131"},"modified":"2023-01-31T04:59:53","modified_gmt":"2023-01-31T04:59:53","slug":"c-11-ile-gelen-file-scoped-types-ozelligi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/c-11-ile-gelen-file-scoped-types-ozelligi\/","title":{"rendered":"C# 11 \u0130le Gelen File Scoped Types \u00d6zelli\u011fi"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde C# 11 ile gelen <em>File Scoped Types<\/em> \u00f6zelli\u011fini ve bu \u00f6zelli\u011fin getirisi olan <code>file<\/code> keyword&#8217;\u00fcn\u00fcn i\u015flevselli\u011fini irdeliyor olaca\u011f\u0131z.<\/p>\n<h5>File Scoped Types Nedir?<\/h5>\n<p>Bir class&#8217;\u0131n, interface&#8217;in, struct&#8217;\u0131n vs. bulundu\u011fu dosyayla kullan\u0131m\u0131n\u0131 k\u0131s\u0131tlamak i\u00e7in kullan\u0131lan yeni bir \u00f6zelliktir. Bu \u00f6zelli\u011fin davran\u0131\u015f\u0131n\u0131 sergileyebilmesi i\u00e7in C# diline <code>file<\/code> keyword&#8217;\u00fc eklenmi\u015ftir.<\/p>\n<blockquote><p><em style=\"color:green;\">File Scoped Types, herhangi bir yap\u0131lanman\u0131n eri\u015fimiyle ilgili davran\u0131\u015f sergiledi\u011fi ve bu davran\u0131\u015f neticesinde eri\u015fime k\u0131s\u0131tlama getirdi\u011fi i\u00e7in esas\u0131nda yeni bir <u>Access Modifier<\/u>&#8216;d\u0131r.<\/em><\/p><\/blockquote>\n<p>File Scoped Types \u00f6zelli\u011fi ile ayn\u0131 namespace veyahut assembly i\u00e7erisindeki t\u00fcr adlar\u0131n\u0131n(type names) aralar\u0131nda olas\u0131 meydana gelebilecek isimsel \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nleyebilmekte ve b\u00f6ylece bir uygulamadaki namespace&#8217;ler de ayn\u0131 isme sahip birden fazla t\u00fcr tan\u0131mlayabilmekteyiz. \u00d6zellikle Code Generator s\u00fcre\u00e7lerinde \u00fcretilen kodlardaki yap\u0131lar\u0131n birbirleriyle isimsel \u00e7ak\u0131\u015fmas\u0131 durumunda File Scoped Types \u00f6zelli\u011fi kullan\u0131larak bu tarz problemlerin \u00fcstesinden gelinebilmektedir.<\/p>\n<p>\u015eimdi \u00f6zelli\u011fi daha iyi g\u00f6zlemleyebilmek i\u00e7in a\u015fa\u011f\u0131daki g\u00f6rseli inceleyelim;<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi.png\" alt=\"C# 11 \u0130le Gelen File Scoped Types \u00d6zelli\u011fi\" width=\"417\" height=\"182\" class=\"alignleft size-full wp-image-26138\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi.png 417w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-300x131.png 300w\" sizes=\"auto, (max-width: 417px) 100vw, 417px\" \/><\/a><br \/>\nG\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere farkl\u0131 dosyalarda tan\u0131mlanm\u0131\u015f olan ayn\u0131 namespace i\u00e7erisindeki &#8216;Example&#8217; s\u0131n\u0131flar\u0131 isimsel \u00e7ak\u0131\u015fma ya\u015fad\u0131klar\u0131ndan dolay\u0131 hata vermektedirler.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-1.png\" alt=\"C# 11 \u0130le Gelen File Scoped Types \u00d6zelli\u011fi\" width=\"514\" height=\"180\" class=\"alignright size-full wp-image-26139\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-1.png 514w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-1-300x105.png 300w\" sizes=\"auto, (max-width: 514px) 100vw, 514px\" \/><\/a><br \/>\nE\u011fer ki bu s\u0131n\u0131flar\u0131 yandaki gibi <code>file<\/code> keyword&#8217;\u00fc ile i\u015faretlersek bu hata ortadan kalkacak ve her iki s\u0131n\u0131f, her ne kadar ayn\u0131 namespace i\u00e7erisinde olsalar dahi farkl\u0131 dosyalarda olduklar\u0131ndan dolay\u0131 ayn\u0131 isimde tan\u0131mlanabilecektirler. Tam bu noktada <strong><em>\u0130yi de hoca! Biz bu i\u015fi <u>partial class<\/u>&#8216;lar ile yapm\u0131yor muyduk?<\/em><\/strong> diye s\u00f6ylendi\u011finizi duyar gibiyim&#8230;<\/p>\n<p>Evet, partial class&#8217;lar ile bir s\u0131n\u0131f\u0131 ayn\u0131 namespace alt\u0131nda fiziksel olarak birden fazla par\u00e7aya da\u011f\u0131tabiliyor lakin kullan\u0131m s\u00fcrecinde compiler a\u00e7\u0131s\u0131ndan bir b\u00fct\u00fcn olarak de\u011ferlendirerek davran\u0131\u015flar\u0131m\u0131z\u0131 uygulayabiliyoruz. Bunu genellikle code generator gibi otomasyonel sistemlerde; \u00fcretilen kodun \u00f6zel olarak yazd\u0131\u011f\u0131m\u0131z kodlar\u0131 ezmemesi i\u00e7in kullan\u0131yoruz. Partial class&#8217;lar \u00f6z\u00fcnde tek bir class&#8217;a kar\u015f\u0131l\u0131k gelirken, File Scoped Types \u00f6zelli\u011fi ile \u00fcretilmi\u015f class&#8217;lar ise ayn\u0131 isimde olsalar bile farkl\u0131 class&#8217;lard\u0131r diyebiliriz. Ayr\u0131ca File Scoped Types \u00f6zelli\u011fini code generator sisteminin \u00fcretti\u011fi kodun, ba\u015fka bir code generator taraf\u0131ndan olu\u015fturulan t\u00fcrlerle \u00e7ak\u0131\u015fma ihtimalini t\u00f6rp\u00fclemek i\u00e7in d\u00fc\u015f\u00fcnebiliriz. \u0130kisinin aras\u0131ndaki niyetsel fark bundan ibarettir. S\u00f6z dizimi olarak ise partial class&#8217;lar\u0131n faaliyet alanlar\u0131 t\u00fcm uygulamayken, File Scoped Types&#8217;\u0131n ise tan\u0131mland\u0131\u011f\u0131 dosyadan ibaret olmas\u0131d\u0131r. Bu durumu i\u00e7eri\u011fimizin devam\u0131nda daha da a\u00e7\u0131yor olaca\u011f\u0131z. <\/p>\n<p>\u015eimdi gelin File Scoped Types \u00f6zelli\u011finin incelemesini biraz daha derinle\u015ftirelim.<\/p>\n<div style=\"font-size:12px;\">\n<em>File1.cs;<\/em><\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nnamespace X;\r\nfile class MyClass\r\n{\r\n    public string Get()\r\n        =&gt; &quot;File1.cs MyClass&quot;;\r\n}\r\n<\/pre>\n<\/div>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz &#8216;File1.cs&#8217; dosyas\u0131 i\u00e7erisinde &#8216;MyClass&#8217; isimli bir class tan\u0131mlanm\u0131\u015ft\u0131r ve malum <code>file<\/code> keyword&#8217;\u00fc ile i\u015faretlenmi\u015ftir. C#&#8217;ta bu \u015fekilde tan\u0131mlanm\u0131\u015f olan bir yap\u0131ya eri\u015fim g\u00f6sterebilmek do\u011frudan m\u00fcmk\u00fcn de\u011fildir. Yani herhangi bir noktadan <code style=\"color:purple;\">new MyClass()<\/code> diyerek bu s\u0131n\u0131ftan nesne \u00fcretemeyiz, \u00fcretemeyiz \u00e7\u00fcnk\u00fc bu s\u0131n\u0131f\u0131n faaliyet alan\u0131 ve eri\u015fim s\u0131n\u0131r\u0131 sadece &#8216;File1.cs&#8217;den ibarettir. Bu davran\u0131\u015fa <code>file<\/code> keyword&#8217;\u00fc sebep olmaktad\u0131r.<\/p>\n<blockquote><p><em style=\"color:gray;\">File Scoped Types \u00f6zelli\u011fi sayesinde koddaki yap\u0131n\u0131n faaliyet alan\u0131 dosya d\u00fczeyinde olacakt\u0131r. Yani ilgili kod i\u00e7erisindeki yap\u0131ya yaln\u0131z o dosya i\u00e7erisinden eri\u015filebilecektir.<\/em><\/p><\/blockquote>\n<p>Bu durumu ilgili dosya i\u00e7erisinde bulunan \u00f6zel yap\u0131lardan faydalanarak a\u015fabilmekteyiz. \u015e\u00f6yle ki;<\/p>\n<div style=\"font-size:12px;\">\n<em>File1.cs;<\/em><\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nnamespace X;\r\nfile class MyClass\r\n{\r\n    public string Get()\r\n        =&gt; &quot;File1.cs MyClass&quot;;\r\n}\r\n\r\npublic class File1MyClassCreator\r\n{\r\n    public string Create()\r\n        =&gt; new MyClass().Get();\r\n}\r\n<\/pre>\n<\/div>\n<p>Yukar\u0131daki koda g\u00f6z atarsan\u0131z e\u011fer &#8216;File1.cs&#8217; dosyas\u0131 i\u00e7erisindeki &#8216;File1MyClassCreator&#8217; isimli s\u0131n\u0131f, <code>file<\/code> keyword&#8217;\u00fc ile i\u015faretlenmedi\u011fi i\u00e7in normal bir davran\u0131\u015f sergileyecek ve uygulamada eri\u015fim belirleyicisinin izin verdi\u011fi \u00f6l\u00e7\u00fcde eri\u015filebilir olacakt\u0131r. Ayr\u0131ca, ayn\u0131 dosya i\u00e7erisindeki &#8216;MyClass&#8217; s\u0131n\u0131f\u0131na eri\u015fim g\u00f6sterebilece\u011finden dolay\u0131 ilgili s\u0131n\u0131f \u00fczerinden herhangi bir i\u015flem ger\u00e7ekle\u015ftirebilecektir. Ama burada dikkat edilmesi gereken husus \u015fudur ki, geriye &#8216;MyClass&#8217; t\u00fcr\u00fcnden bir nesne d\u00f6nd\u00fcrmek istesek bu durumu ger\u00e7ekle\u015ftiremeyece\u011fiz. \u00c7\u00fcnk\u00fc &#8216;MyClass&#8217; <code>file<\/code> ile i\u015faretli oldu\u011fu i\u00e7in eri\u015fim s\u0131n\u0131r\u0131n\u0131n yan\u0131nda i\u015flevsel s\u0131n\u0131r\u0131 da dosya d\u00fczeyinde olacakt\u0131r ve bu s\u0131n\u0131ftan \u00fcretilen herhangi bir instance&#8217;\u0131n uygulama seviyesinde herhangi bir noktada kullan\u0131labilmesi pratikte m\u00fcmk\u00fcn olmayacakt\u0131r.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-2.png\" alt=\"C# 11 \u0130le Gelen File Scoped Types \u00d6zelli\u011fi\" width=\"350\" height=\"137\" class=\"aligncenter size-full wp-image-26143\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-2.png 350w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-2-300x117.png 300w\" sizes=\"auto, (max-width: 350px) 100vw, 350px\" \/><\/a><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-3.png\" alt=\"C# 11 \u0130le Gelen File Scoped Types \u00d6zelli\u011fi\" width=\"674\" height=\"85\" class=\"aligncenter size-full wp-image-26144\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-3.png 674w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-3-300x38.png 300w\" sizes=\"auto, (max-width: 674px) 100vw, 674px\" \/><\/a>Bu noktada \u015f\u00f6yle bir \u00f6zet verebiliriz ki, <code>file<\/code> keyword&#8217;\u00fc ile i\u015faretlenmi\u015f olan s\u0131n\u0131flara do\u011frudan bir eri\u015fim s\u00f6z konusu de\u011fildir ve bulunduklar\u0131 kaynak dosyas\u0131n\u0131n d\u0131\u015f\u0131ndan dolayl\u0131 olarak eri\u015filebilirler. \u0130\u015fte bundan dolay\u0131 File Scoped Types \u00f6zelli\u011fi kullan\u0131lan yap\u0131lar <code>public<\/code>, <code>private<\/code> vs. gibi access modifiers ile i\u015faretlenemezler.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-4.png\" alt=\"C# 11 \u0130le Gelen File Scoped Types \u00d6zelli\u011fi\" width=\"331\" height=\"146\" class=\"aligncenter size-full wp-image-26147\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-4.png 331w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-4-300x132.png 300w\" sizes=\"auto, (max-width: 331px) 100vw, 331px\" \/><\/a>\u015eimdi bu noktaya kadar anlatt\u0131klar\u0131m\u0131z\u0131 \u015f\u00f6yle a\u015fa\u011f\u0131daki g\u00f6rselde oldu\u011fu gibi geni\u015f manada \u00f6zetleyelim;<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-5.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-5.png\" alt=\"C# 11 \u0130le Gelen File Scoped Types \u00d6zelli\u011fi\" width=\"832\" height=\"625\" class=\"aligncenter size-full wp-image-26148\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-5.png 832w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-5-300x225.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-5-768x577.png 768w\" sizes=\"auto, (max-width: 832px) 100vw, 832px\" \/><\/a><\/p>\n<h5>File Scoped Types&#8217;\u0131 Hangi Yap\u0131larda Kullanabiliriz?<\/h5>\n<p>File Scope Types \u00f6zelli\u011fininin getirisi olan <code>file<\/code> keyword&#8217;\u00fc a\u015fa\u011f\u0131daki yap\u0131lar e\u015fli\u011finde kullan\u0131labilir.<\/p>\n<table style=\"text-align:center;\">\n<tbody>\n<tr>\n<td>class<\/td>\n<td>interface<\/td>\n<td>struct<\/td>\n<\/tr>\n<tr>\n<td>enum<\/td>\n<td>delegate<\/td>\n<td>record<\/td>\n<\/tr>\n<tr>\n<td colspan=\"3\" style=\"font-size:12px;color:#7f0000;\">Property, event, field, metot vs gibi memberlar i\u00e7in kullan\u0131lamaz.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5>file partial<\/h5>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-6.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-6-300x263.png\" alt=\"C# 11 \u0130le Gelen File Scoped Types \u00d6zelli\u011fi\" width=\"300\" height=\"263\" class=\"alignleft size-medium wp-image-26150\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-6-300x263.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-6.png 384w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nNormal \u015fartlarda bir dosyada <code>file<\/code> ile i\u015faretlenmi\u015f olan ayn\u0131 isme sahip tek bir yap\u0131 kullan\u0131labilir.<\/p>\n<p>Lakin istendi\u011fi taktirde bu yap\u0131lar\u0131 <code>file partial<\/code> ile i\u015faretleyerek tek bir dosyada, ayn\u0131 isme sahip birden fazla yap\u0131 olu\u015fturabilir ve bunlar\u0131n hepsini bir b\u00fct\u00fcn olarak kullanabilirsiniz.<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-7.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-7-300x264.png\" alt=\"C# 11 \u0130le Gelen File Scoped Types \u00d6zelli\u011fi\" width=\"300\" height=\"264\" class=\"alignright size-medium wp-image-26151\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-7-300x264.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2023\/01\/C-11-Ile-Gelen-File-Scoped-Types-Ozelligi-7.png 384w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>&nbsp;<br \/>&nbsp;<\/p>\n<h5>Bu \u00d6zellik Neden Geldi?<\/h5>\n<p>\u015eimdi gelin son olarak bu \u00f6zelli\u011fin hangi ihtiya\u00e7lara istinaden geldi\u011finin isti\u015faresini eyleyip, yaz\u0131m\u0131z\u0131 nihayete erdirelim. Bu \u00f6zelli\u011fin C# diline gelme nedenlerini birka\u00e7 maddeyle a\u015fa\u011f\u0131daki gibi kategorize edebiliriz.<\/p>\n<ul>\n<li><strong>Generated Code<\/strong><br \/>\nYaz\u0131m\u0131z\u0131n ilk sat\u0131rlar\u0131nda da s\u00f6yledi\u011fimiz gibi tipik olarak generate edilen kodlar ayn\u0131 s\u0131n\u0131f isimlerini tekrar tekrar kullanabilme e\u011filimine sahiptirler. Bu \u00fcretilen kodlarda olas\u0131 isimsel \u00e7ak\u0131\u015fmalar\u0131 <code>file<\/code> keyword&#8217;\u00fc ile \u00f6nleyebiliriz.\n<\/li>\n<li><strong>Nested Class<\/strong><br \/>\nNested class&#8217;lar da ister istemez s\u0131n\u0131fsal isim \u00e7ak\u0131\u015fmalar\u0131 olabilmektedir. Bu olas\u0131 durumlar <code>file<\/code> keyword&#8217;\u00fc ile ar\u0131nd\u0131r\u0131labilir.\n<\/li>\n<li><strong>Module &#8211; Encapsulation<\/strong><br \/>\n<code>file<\/code> ile encapsulation daha dosya bazl\u0131 ve net bir hale getirilebilir.\n<\/li>\n<li><strong>Test<\/strong><br \/>\nTest s\u0131n\u0131flar\u0131 i\u00e7in kullan\u0131labilir. Tabi test s\u00fcre\u00e7lerinde bu s\u0131n\u0131flara do\u011frudan eri\u015fim olmayaca\u011f\u0131ndan bunlar\u0131 kullanan s\u0131n\u0131flar \u00fczerinden testin ger\u00e7ekle\u015ftirilmesi gerekecektir.\n<\/li>\n<\/ul>\n<p>\u0130\u015fte bu kadar \ud83d\ude42<\/p>\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, Bu i\u00e7eri\u011fimizde C# 11 ile gelen File Scoped Types \u00f6zelli\u011fini ve bu \u00f6zelli\u011fin getirisi olan file keyword&#8217;\u00fcn\u00fcn i\u015flevselli\u011fini irdeliyor olaca\u011f\u0131z. File Scoped Types Nedir? Bir class&#8217;\u0131n, interface&#8217;in, struct&#8217;\u0131n vs. bulundu\u011fu dosyayla kullan\u0131m\u0131n\u0131 k\u0131s\u0131tlamak&#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":25103,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4754,4580],"tags":[4581,4764,4582,4765],"class_list":["post-26131","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net-7","category-c-11","tag-c-11","tag-c-11-file-scoped-types","tag-c-11-yenilikleri","tag-file-scoped-types"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/26131","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=26131"}],"version-history":[{"count":13,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/26131\/revisions"}],"predecessor-version":[{"id":26155,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/26131\/revisions\/26155"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/25103"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=26131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=26131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=26131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}