C# Bazı az bilinen özellikler. Bir developer için araştırmak kaçınılmazdır. “ne, neden, nasıl …” sorularını sormak asli meziyetlerinden olmalıdır. ]]>
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.

class Example002
{
public Example002()
{
//Ancak Default değerin atanması için Aşağıdaki kod yordamı ile atamasını yapmalısınız.
foreach (PropertyDescriptor p in TypeDescriptor.GetProperties(this))
{
DefaultValueAttribute dv = (DefaultValueAttribute)p.Attributes[typeof(DefaultValueAttribute)];
if(dv != null)
p.SetValue(this, dv.Value);
}
}
public int dv1 { get; set; }
//using System.ComponentModel; eklenmiş olmalı
[DefaultValueAttribute(37)]
public int dv2 { get; set; }
}
//using System.Diagnostics; eklenmelidir. [DebuggerBrowsable(DebuggerBrowsableState.Never)]
string tmp = null;
//Bu adımda Gösterim uygulanamıyor, Ekrana bilgi basılıyor.
Console.WriteLine("?? 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.");
Console.WriteLine("Kullanım : {0}", tmp ?? "-(Null değer)-");
//Her bir değişken ifade yerine yeni satıra geçiş eklenmiiş olur.
Console.WriteLine("yeni satır: {0} 1. Satır :{0} 2. Satır :{0} 3. Satır :", Environment.NewLine);__arglist - Arguman listesi olarak parametre geçmek için kullanılır. __makeref - Tip referanslı objenin referansını almak için kullanılır. __reftype - Tip referanslı objenin tipini almak için kullanılır. (<strong>_makeref</strong> in tam tersidir.) __refvalue - Tip referanslı objenin gerçek değerini almak için kullanılır.
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.
private static void exceptionHandlingExample()
{
//using System.Runtime.ExceptionServices; eklenmeli
ExceptionDispatchInfo possibleException = null;
try
{
//Hata verdirmek için saçma bir kod ekliyoruz.
int.Parse("a");
}
catch (FormatException ex)
{
possibleException = ExceptionDispatchInfo.Capture(ex);
}
//yapacağınız işlemler.
//...
//..
//.
if (possibleException != null)
{
//Orjinal hatayı fırlatıyoruz.
possibleException.Throw();
}
}9. IsInfinity : Belirtilen sayının -/+ sonsuza eşdeğer olup olmadığını verir.
Console.WriteLine("IsInfinity(3.0 / 0) == {0}.", Double.IsInfinity(3.0 / 0) ? "Doğru" : "Yanlış");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.
//using System.Diagnostics; eklenmeli.
Debug.WriteLine("Debug mesajları nasıl şekillendirilir?");
Debug.Indent(); //Hizalamayı Sağa kaydıralım.
Debug.WriteLine("1 Debug.WriteLine");
Debug.WriteLine("2 Debug.Indent");
Debug.WriteIf(1 == 1, "Sanırım 1=1 bu kesin :)");
Debug.WriteLine("2 Debug.WriteIf");
Debug.WriteLine("3 Debug.Assert");
Debug.Unindent();//Hizalamayı Sola kaydıralım.
Debug.WriteLine("Komutların sonu.");
Debug.WriteIf(1 == 0, ":( bu satır görünmeyecek");
Debug.Assert(1 == 0, "Şu işe bakın 1=0 değilmiş :) ");