MCTS – Framework Fundamentals
Sınav Konuları : Value Types,Reference Types,Attributes,Generic Types,Exception Classes,Boxing and Unboxing,TypeForwordedToAttribute Class
Icomoarable , IDisposable , IConvertable , IClonable , IEquatable , IFormatable interfaces
Delegate class , Eventargs class , Eventhandler delegates
Değer Tiplerini Kullanmak.
Boolean, nümerik gibi basit tiplerdir ve memory de data bir referans ile değil direk olarak tutulur.
3 tip değer tipi vardır. Built-in (.NET Framework ile gelen hazır tiplerdir),user defined (structs) ve enumarations.
Best Practice : Sık kullanılan counterlar için integer tipleri kullanmak ve floating sayılar için double kullanmak iyidir çünkü runtime performanslarını optimize eder.
Değer tiplerinde datayı bir değişkenden başka bir değişkene kopyalamak demek stack ta iki ayrı lokasyona yazılması demektir.
Bir değer tipine null kabul eder hale getirmek : Örneğin bir formunuz var evet/hayır değeri var ancak boş ta olabilir. O zaman
Nullable b = null veya bool? b=null olarak tanımlanabilir.
Bu değişkenin null kontrolünü ise if(b.HasValue) diyerek kontrol edebiliriz.
Struct’lar sınıflardan daha etkilidirler. Eğer struct işinizi çözüyorsa struct kullanmak performansı artırır. Struct tanımlaması sınıflar ile birebir aynıdır tek fark keyword dür.
Genel Referans Tiplerini Kullanmak.
Referans tipleri için stack’ta pointer adı verilen datanın adresi saklanır.Gerçek data ise memory de heap’te saklanır.Runtime memory’i heap’i işleten Garbage Collection tarafından yönetir.Garbage Collection memory’yi periyodik olarak ihtiyaç olduğunda veya GC.Collect triggerı tetiklendiğinde boşaltır.
Bir referans tipini diğerine kopyalanırsa data değil adresleri aynı olur.
Built-in referans tiplerden bazıları : System.Object ,String , Text.StringBuilder , IO.Stream , Exception
String bir değişken değiştirilirse eskisi memory den atılmadan yeni bir instance ‘ı oluşur.
string s = “Koray”;
Yukardaki örnekte stringin son değerinin bir referansı vardır ilk değeri ise referansı yoktur ancak memory de hala bulunmaktadır. Bu tarz işlemleri Concat,Join,stringBuilder veya Format gibi fonksiyonlarla yapmak gereksiz garbage collection yapmayı engeller dolayısıyla performansı artırır.
Streamler : Diske yazmak ,diskten okumak ve ağ haberleşmesi için streamler kullanılır. Network streamleri System.Network.Sockets namespace’i altında Şifrelenmiş streamler ise System.Security.Cryptography namespace’i altında bulunur.
Stream Tipleri :
FileStream : Dosyaya yazma,okuma için base stream’dir.
MemoryStream : Memory’e yazma okuma için base stream’dir.
StreamReader : Stream’den data okur
StreamWriter : Stream’e data yazar.
Exceptions : Kendi Exception sınıfını oluşturmak için sınıfı ApplicationException base sınıfından türetmek gerekir.
Framework içerisinde bir çok sınıf var ve bu sınıfların ortak olan özelliklerini ve metotlarını standardize etmek için interface’lerden inherit edilirler
Sık kullanılan interface’ler
IComparable : Sort (Sıralama) işlemi için kullanılır.
IDisposable : Kaynakları serbest bırakmak için kullanılır. metot : Dispose()
IConvertable: Base tipi bool,byte gibi değerlere dönüştürebilmek için kullanılır.
IClonable : Nesneyi kopyalamak için kullanılır.
IEquatable : İki nesneyi eşit mi diye kontrol etmek için kullanılır. İf(a==b)
IFormatable : Nesneyi formatlaı bir stringe dönüştürmeye yarar.
Attributes: Bir property veya metoda programatik olarak Reflection tekniği kullanılarak tip tanımlamayı sağlar.Attribute’ler ile bir sınıfa güvenlik ayarları verilebilir,güvenlik riskini azaltılabilir,kabileyet kazandırılabilir (serizilation gibi),title,description,copy right gibi assembly tanımlanabilir.
Örneğin bir namespace’e erişim için bir lisans dosyası gerekliyse aşağıdaki attribute kullanılabilir.
TypeForwarding: bir A assembly’si içindeki bir tipi B assembly’si içerisine taşıma işlemine denir.Böylece A assembly sini tekrardan compile etmeye gerek kalmadan clientlarda kullanabiliriz.
Boxing ve Unboxing ten kurtulmak için ipucu :
– Object alan bir metod yerine her bir tipten alan override edilmiş metodlar kullanmak
– Generic kullanmak
– Structure kullanırken ToString,Equals,GetHash virtual üyelerini kullanmak.
Nisan 8, 2010 - Posted by	koraykirdinli | C#	| .net framework, mcpd, mcts, training kit.