C# Bazı az bilinen özellikler

0 5.332

Bir developer için araştırmak kaçınılmazdır. “ne, neden, nasıl …” sorularını sormak asli meziyetlerinden olmalıdır. Ben de ara sıra farklı şeyler öğrenmek amacıyla interneti kurcalarken, yabancı kaynaklarda sıkça C# ile ilgili az bilinenlerin derlendiği yazılar ile karşılaştım. Çoğunlukla aynı döngüde sıkıştığımız için gözlerden kaçan bir çok nokta olabileceğini ve bu tarz derlenmiş bir çalışmanın işine yarayabilecek insanlar olduğunu düşündüm.Bu aşamadada kendimce bu tarz bir paylaşıma imza atmak istedim. Devamı gelirmi bilmiyorum, ancak bir derleme ile başlamak iyi olur sanırım.

  1. ObsoleteAttribute (Desteksiz özellik) : Aslen sonraki sürüm ve/veya güncellemeler ile Desteklenmeyecek, yada başka bir ifade ile Tedavülden kalkacak bir özelliği işaret etmek için kullanılır. Assembly , modül, parametre ve geri dönüş değerleri dışındaki tüm program öğeleri için kullanılabilir.
  2. DefaultValueAttribute (Başlangıç değeri) : Bir sınıf oluşturulduğunda tanımlanan değişkenler tiplerine bağlı olarak ilk değerlerini alırlar. Constructor (Oluşturucu) methodunda ise istediğimiz alternatif atamalarını yapabiliriz, Ancak bunun için liave edeceğimiz ufak bir kod parçası ile Tüm tanımlı değişkenlerin atamalırını DefaultValue Attribute’u ile belirtilen değere otomatik olarak atanmasını sağlayabiliriz.

  3. DebuggerBrowsable() : Debug esnasında sınıfımıza ait property lerin, nasıl görünmesini yönetmek amaçlı bir Attrinbute. 3 opsiyonu ile;
    1. “Never” – Debug esnasında görünmemesi.
    2. “Collapsed” – Alt elemanları olan objeyi, default kapalı olarak görünmesini sağlar.
    3. “RootHidden” – Alt elemanları olan objeyi gizleyip, alt elemanlarını göstermek için.
  4. ?? operatörü : ?? ifadesi Tek satırlık, kısa bir isNull kontrolüdür, Null değil ise sol eşit ise sağ tarafındaki ifadeyi döndüren basic bir condition ifadesidir.
  5. NewLine : Adı aşikar yeni satır karakteri eklemek için kullanılabilir.

     
  6. BigInteger : Bu değişken immutable’dır ve diğer birçok tipin aksine min,max değerleri olmadığı için aşırı büyüdüğü taktirde “OutOfMemoryException” hatası alma riski vardır.
  7. __arglist , __reftype, __makeref,  __refvalue : C# ta dökümante edilmemiş, ancak visual studio nun tanıdığı bazı özel keywordler mevcut. Kısaca incelersek ;

8. ExceptionDispatchInfo : Uygulamanın bir noktasına yakalanmış hatayı ifade edip saklamanıza yarar. .Trow() methodu ile ilgili aksiyonlarınızı aldıktan sonra anynı hatayı orjinal stacktrace ini koruyarak fırlatabilirsiniz.

9. IsInfinity : Belirtilen sayının -/+ sonsuza eşdeğer olup olmadığını verir.

Yukarıdakine benzer bir kodun ekran çıktısı şu şekilde olacaktır;

10. Debug.Assert, Debug.WriteIf, Debug.Indent, Debug.WriteLine : Debug esnasında değişik uyarı işlemleri için kullanılır.

  • Debug.Assert : Verilen koşul sağlanmaz ise, call stack (çağrım geçmişi) ‘ini içeren bir mesaj çıkarır.
  • Debug.WriteLine : Output ekranına bilgi yadırmak için kullanılır.
  • Debug.WriteIf : Kontrollü olarak bilgi yazdırmak için kullanılır.
  • Debug.Indent : Bilgi yazdırırken, hizalamayı ayarlamak için işe yarayacaktır.

Email adresiniz yayınlanmayacaktır.