Bu yazının amacı bu kitabın satışını arttırmak değildir. Bu yazının amacı olsa olsa böyle bir kitaba ihtiyacı olmayanların bu kitabı satın alıp para ve zaman kaybetmelerinin önüne geçmek olabilir. Her ne kadar bu kitap .NET 3.5 destekli C# 3.0’ı anlatmak kaygısı ile kaleme alınmış olsa bile C# 3.0 piyasaya verileli az olmadı. Bu bilgiyi şunun için yazdım: Mevcut bir işletim sisteminin veya bir programlama dilinin yeni sürümü çıktığında özellikle yurt dışında sıcağı sıcağında yeni sürümle gelen yeniliklere odaklanan kitaplar yazılıp yayınlanmaktadır. Böyle kitaplar eski sürüm hakkında bilgisi olup yeni sürümle gelen yeni özellikler hakkında hemen bilgi edinmek isteyenlere uygundur. En başta söylemeliyim ki bu kitap C# 3.0 ve .NET 3.5’la gelen yenilikleri anlatmak kaygısı ile kaleme alınan bir kitap değildir. Başka bir deyişle bu kitabın hedef okuru programcılık nedir az çok bilip C# ve nesneye yönelik programcılıkta uzman olmayı kafasına koyanlardır. Bu nedenledir ki bu kitapta konular temelden ele alınarak 1100 sayfa boyunca C# anlatıldı. C# anlatılırken .NET Framework 3.5 ile gelen C# 3.0 derleyicisi ve Visual Studio 2008 kullanıldı. Bu yazıda asıl bu kitapta C#’ı nasıl anlattım sorusuna cevap aramaya çalışacağım.

Elbette C# uygulamaları geliştirmek için kullanılan bilgisayara .NET Framework kurulup Not Defteri programı ile istenen programları yazmak mümkün olsa bile bu zahmetlidir. Bu nedenle C# veya .NET uyumlu başka bir programla diliyle uygulama geliştirmek isteyenler Visual Studio’yu veya C# için hazırlanmış Express Edition’ı kullanmayı tercih ediyorlar. Bu nedenledir ki bu kitabın başında 18 sayfa boyunca Visual Studio ile hazırlanan C# uygulamalarının temel özellikleri ve bu uygulamaların nasıl derlenip çalıştırıldığı ve nasıl debug edildiğinden kısaca söz edildi. İşte bu kitabın ilk bölümüyle ilgili olarak kitaptan alınmış bir paragraf : “Bu bölümde ileride işlenecek bazı konulara temel oluşturan birkaç ayrıntıdan söz edilmektedir. Aslında C# programlama dilinden bağımsız olarak Visual Studio hakkında yüzlerce sayfa yazılabilir. Ne ki bu kitabın böyle amacı yoktur.” Kitabın içindekiler sayfasına bakıp “bu kitabın 18 sayfası ekran görüntüleriyle doldurulmuş” diye eleştireceklere şunu söylemek isterim: İlk bölümde Visual Studio’nun yardımıyla uygulama geliştirilirken karşılaşılan en önemli kavramlardan birisi olan Debug ve Release modlarından söz edilmektedir.
Bu kitabın C# ile Programcılığa Giriş adlı 2. bölümünde C# ve nesneye yönelik programcılık hakkında kuşbakışı bilgi verilmektedir. Bu sayede okurun C# ve nesneye yönelik programcılık hakkında temel bilgilere sahip olması hedeflendi. Bu kitabı incelemeden eleştirmeyi kafalarına koymuş olanlara şunu söylemek isterim:Memik Yanık’ın C# 3.0 kitabının 36 sayfadan meydana gelen Programcılığa Giriş adlı 2. bölümünü okuyanlar metotlarla olayları karıştırmazlar, Application sınıfının işlevinden bi haber olmazlar, formların nasıl hazırlanıp ekrana getirildiğini bilirler. Aşağıda verdiğim paragrafı kitaptan olduğu gibi buraya aldım: “Daha önce az çok kod yazmış olanlar bir sonraki bölüme şöyle bir baktıklarında bütün yazılanların bildikleri konular olduklarını sanabilirler. Sanabilirler diyorum çünkü bir sonraki bölümde C# ile program yazılırken gerek duyulan pek çok kavram hakkında teknik açıklamalar yapılmaktadır. Bu nedenle bu kitabı eline alan herkesin bir sonraki yani 2. bölümü dikkatli okumasını öneriyorum. Tabii bu öneri kitapçıda veya herhangi bir yerde bu kitabı satın almayacakları önceden belli olup ta meraktan bu kitabı şöyle bir gözden geçirenleri veya C# hakkında yeterince bilgisi olanları kapsamıyor. Böyle bir kitaba ihtiyaçları olmayanların bir sonraki bölümde yazılanlara yabancı olmamaları normaldir. Bir sonraki bölümün gerek içerik gerekse de konuların işleyişi bakımından bütün yerli yabancı kaynaklardan ayrıldığını söyleyebilirim.” Elbette bu kitabın 2. bölümünde yazılanların bir kısmının başka kaynaklarda bulunma ihtimali yüksektir. Programcılık kitaplarında bilim yapmadığımıza göre bu kitapta anlatılan her konunun başka kaynakları bulunması son derece normaldir. Kitapların arasındaki en önemli fark konuların anlatım biçimi ve hikâye edilme tarzıdır.
Gelelim bu kitabın Konsol Uygulamaları adlı 2. bölümüne. Bir sonraki bölüm bir bakıma Programcılığa Giriş adlı 2. bölümün devamı gibidir. Çünkü Konsol Uygulamaları adını verdiğim 3. bölümde C# kodu yazılmak istendiği zaman “ilk” gerek duyulacak kavramlar ve en çok kullanılan .NET sınıflarını anlatmaya çalıştım. Her ne kadar konsol uygulaması geliştirip başkasına verme ihtimaliniz düşük olsa bile bir sonraki bölümde C# ile program yazmanın geri planı üzerinde biraz durulmaktadır. Tabii bununla da yetinilmeyip Konsol Uygulamaları dahilinde Windows Formlarının nasıl ekrana getirilebileceği anlatılarak referans ve namespace kavramları hakkında ön bilgi verilmeye çalışılmaktadır. Yine bazı arkadaşlar “madem Windows formuna gerek duyuyorsun da neden konsol uygulaması hazırladın” diye sorabilirler. Bu soruyu soran arkadaşlara aşağıda verilen 2 Main() metodunu incelemelerini önermek isterim.
static void Main(string[] args)
{
Form1 F1 = new Form1();
F1.ShowDialog();
Console.ReadKey();
}
static void Main(string[] args)
{
Form1 F1 = new Form1();
F1.Show();
Application.Run();
Console.ReadKey();
}
Sizce Memik Yanık konsol uygulamasının Main() metodunu bu şekilde düzenlemekle neyi hedeflemektedir? Sizce hangi kaynakta(yerli yabancı fark etmez) Form nesnesi Application sınıfından yararlanılmadan Show() metodu ile ekrana getirilmeye çalışılmıştır? Hayır hayır Memik Yanık Amerika’yı yeniden keşfetmiyor; Memik Yanık’ın burada yaptığı okurun dikkatini Application sınıfının işlevine çekmektir. Sizce Application sınıfı hakkında yeterince bilgi edinmemiş birisi Windows mesajlarını hakkıyla anlayabilir mi?
Gelelim bu kitabın 4. bölümde anlatılan şu Namespace kavramına. Her ne kadar bu kitabın 2. ve 3. bölümlerinde referans ve namespace’lerden söz edilmiş olsa bile .NET programcılığında henüz yolun başında olan birisi için Namespace kavramı hakkıyla öğrenmesi gereken kavramlardan birisidir. Tabi henüz yolun başında olan birisine namespace kavramını en başta anlatacağım deyip kafasını karıştırmamak gerekir. Bu düşünce ile namespace’ler hakkında bilgi vermeye kısıtlı bir konsol uygulaması hazırlayarak başladım. Çünkü C# derleyicisinin derleme yaparken neyin sınıf neyin namespace olduğuna karar verirken nasıl bir yöntemi kullandığının bilinmesi gerekiyor. Bu nedenle Memik Yanık’ın kitabında derleme hakkında bilgi verirken “System.dll” ve “System.core.dll” adlı referanslardan söz etti. Namespace adlı bölümün ileri ki sayfalarında .NET Framework ile gelen Namespace’lerdeki sınıfları kullanmaktan öte programcıların kendi sınıflarını nasıl namespace olarak düzenleyebileceklerinden söz edildi. Tabii ki C# konulu kitapların hemen hepsinde nasıl namespace hazırlandığından söz edilmektedir.
Memik Yanık’ın C# kitabının 5. bölümünde 36 sayfa boyunca değişkenler hakkında bilgi verilmektedir. Bazı okurlara göre değişkenlere bu kadar sayfa ayırmanın gerekçesi nedir diye sorabilirler. Elbette daha önce C# hakkında az çok bilgi edinmiş olanları göz önüne alırsak değişkenlere daha az sayfa ayırmak gerekirdi. Örneğin daha önce C# konulu kaynakları okumuş olanlar değişkenlerin nasıl tanımlanıp nasıl ilk değer aktarıldığını bilirler. Her ne kadar bu bölümde Nullable tiplerden, Parse() metodundan, Convert sınıfından söz edilse bile bu kitabı bu bölüm bağlamında değerlendirecek olursam şunları söyleyebilirim: Bu kitabın bu bölüm bağlamında bir artısı varsa değişkenlerin bütün yönleri ile ele alınmış olmasıdır. Bu nedenle değişkenler konusunu bu kitaptan okuyan birisi değişkenlerle ilgili olarak başka kaynaklara bakma gereğini duymaz. Benzer şeyler bu kitabın 6. bölümü için de söylenebilir. Çünkü kitabın 6. bölümünde 18 sayfa boyunca dizi değişkenler ve Array sınıfı her yönüyle en ince ayrıntısına kadar anlatılmaktadır. Belki bu kitap Değişkenler adlı bölüm bağlamında şöyle eleştirilebilir: Bu metni biraz kesip, bazı metot ve işlemlerden söz etmeyip birkaç sayfa tasarruf edebilirdiniz. Ancak ben tercihimi dizi değişkenleri her yönüyle anlatmak yönünde yaptım. Yani istedim ki bu kitabı edinenler C#’la ilgili temel konuları öğrenirken başka kaynaklara başvurma gereğini duymasın.
Şimdi sırada bu kitapta toplam 8 sayfa yer tutan Operatörler adlı bölüm var. Tabi hemen bazı arkadaşlar 8 sayfa boyunca artı(+), eksi(-), bölme(/) vs.. operatörlerinden söz etmiş olduğumu düşünebilirler. Bu bölümde bu operatörlere kısaca değinilmiş olsa bile asıl ağırlık Kaydırma Operatörleri ile as ve is operatörlerine verildi. Çünkü as ve is operatörleri çok sık kullanılmaktadır. Devamında 3 sayfa boyunca bit düzeyinde işlem yapılırken kullanılan operatörlerden söz edildi. Matematiksel işlemlerde kullanılan operatörler hakkında bu kitapta yazılanlar çıkarılsa bile sayfa sayısı değişmiyordu. Bit düzeyinde işlem yapılırken kullanılan operatörlerden yararlanmak son derece teknik bir işlem olmasına rağmen konular öyle hikaye edildi ki ilk okumada mutlaka anlaşılacak yalınlıktadır.
Bu kitabın Blok Kontrol adlı bölümünde 10 sayfa boyunca if, while, for, foreach’ten söz edildi. Bu kitabın bu bölüm bağlamında diğer kitaplara bir artısı pek yoktur. Ancak başlangıçta zor anlaşılan foreach döngüsünü daha önce hiç duymamış olanlar bile bu kitabın ilgili sayfalarını okuduklarında foreach döngülerine hemen hakim olabilirler.
Bu kitabın 9. bölümünde 26 sayfa boyunca string işlemlerinden ve Math sınıfındaki metotlardan söz edilmektedir. Neden mi bu konuyu önemsedim? Çünkü kod yazılırken en çok yapılan işlemlerin başında string işlemleri gelmektedir. Elbette String ve Math sınıflarının bazı metotlarını göz ardı edip bu bölümün sayfa sayısını 22’ye düşürmek mümkündü. Bu durumda C# ile programcılıkta yeni olan okurların başka kaynaklara başvurma ihtiyacı olurdu. Açıkçası istedim ki bu kitabı her kim edinirse String ve Math sınıfının metotları konusunda eksiksiz bilgiye sahip olsun. Örneğin String sınıfının Splip metodunu ayrıntılı bir şekilde anlattım. Bu kitabın 14 sayfalık 10. bölümü bir bakıma String İşlemleri adlı 9. bölümün devamı gibidir. Çünkü 10. bölümde StringBuilder sınıfından ve Düzenli İfadelerden söz edilmektedir. Tam bu noktada bu kitabın boyutlarından kısaca söz etmek istiyorum. Bu kitabın yazı alanın genişliği tam tamına 13 cm’dir. İsim vermeye gerek yok aynı genişliğe sahip(16 cm) birçok kitapta yazı alanı genişliği en fazla 11.5 cm’dir. Asıl demek istediğim şudur: Toplam 1074 sayfa olan bu kitap başka yayınevlerinin ölçüleri ile basılsaydı sayfa sayısı en az 1200 olurdu. Yani anlayacağınız bu kitabın sayfa sayısını azaltmak sürekli çaba harcadım.
11. bölümde 16 sayfa boyunca tarih ve zaman bilgileri bütün ayrıntıları ile anlatılmaktadır. Başka bir deyişle bu kitabı okuyan birisi için tarih ve zaman bilgileri üzerinde yapılan işlemler bağlamında bilmediği hiçbir ayrıntı kalmaz. Ayrıca bu bölümü okuyanlar Ticks özelliği ve TimeSpan yapısı hakkında bilgi sahibi olurlar. Bazı arkadaşlar yine itiraz edip Tarih ve zaman bilgileri üzerinde yapılan işlemleri anlatmak için 16 sayfa fazla değil mi? Bir görüşe göre evet. Şartları zorlayıp bu bölümün sayfa sayısını 12 veya 14’e indirmek mümkündü. Ötesi birçok kitapta bu konuya ayrılan sayfa sayısı üç beştir. Buna rağmen neden mi bu konuyu bütün ayrıntıları ile anlattım. Çünkü izlediğim forumlarda zaman ve tarihsel bilgiler üzerinde yapılan işlemlerle ilgili çok sayıda soru sorulmaktadır. Başka bir deyişle her C# programcısının bu işlemlere ihtiyacı olduğundan herkesin bu işlemler hakkında bilgi sahibi olması gerekiyor.
Bu kitabın 12. bölümünde toplam 12 sayfa boyunca Pointer değişkenlerden söz edilmektedir. Son derece teknik bir konu olan Pointer değişkenler hakkında bu kitapta yazılanlar ilk okumada anlaşılacak yalınlıktadır. Ötesi bu bölümde IntPtr tipi değişkenlerden söz edilmektedir. Türkiye’de IntPtr tipi Pointer değişkenlerden ilk söz edenin Memik Yanık olduğunu dikkatinize sunmak isterim. IntPtr tipi Pointer değişkenler çok mu önemlidir? Windows’un API adı verilen fonksiyonlarını kullanmayı düşünüyorsanız IntPtr tipi Pointer değişkenler hakkında az da olsa bilgi sahibi olmak durumundasınız.
Her ne kadar bu kitabın Programcılığa Giriş ve Konsol Uygulamaları adlı 2. ve 3. bölümlerinde Class kavramından az çok söz edilmiş olsa bile konunun ayrıntıları 13. bölümden itibaren anlatılmaktadır. Birçok yerli yabancı kitapta Class’lardan söz edilirken memeli hayvanlardan, arabalardan vs. söz edilir. Başka bir deyişle Class kavramının zor anlaşılması için herkes görüş birliğine varmış gibi. Memik Yanık nesneye yönelik programcılık şudur, şu ilkeleri vardır vs demeden direk kod üzerinde Class kavramından söz eder. Örneğin Memik Yanık bu kitabın ta ilk sayfalarında şöyle bir cümle kurdu: “C# programlarını Class olarak düzenlemek zorunluluğu vardır. Bu nedenle aşağıdaki gibi bir Class bloğu hazırladım”. Bu kadar basit. Henüz yolun başında olan ve programcılıkla ilgili temel kavramlardan bile bi haber olan birisine memelilerden, arabalardan vs söz etmek kafaları karıştırmaktan öte bir işe yaramaz. Ötesi C#’la ilgili kaynaklarda değişken-alan ayrımından hiç söz edilmez. Tamam kitabın başında eski alışkanlıklara uyup alanlara değişken denilmesi belki anlatım kolaylığı sağlıyor ama Class’lar ve nesneye yönelik programcılık anlatılırken değişkenlerin gerçekte alan olduğundan hiç söz edilmez.
Daha önce az çok program yazmış ve nesne nedir Class nedir sorularına verecek cevabı olan birisi Memik Yanık’ın kitabındaki “Class’lar ve Nesneye Yönelik Programcılık” adlı 38 sayfalık bölüme şöyle baktığına kesin burun kıvıracaktır. Sanki Memik Yanık bu bölümü C# uzmanları için yazmış ta uzmanların bu metinden öğreneceği yeni bir şey yokmuş. Sanki Memik Yanık bu bölümü herkesin işine yarayacak Class örnekleri hazırlamak için kaleme almış. Bu bölümün amacı Class’lar ve Class’ların üyelerinden söz etmektir, yapıcı ve yok edici metotların nasıl hazırlandığını okura göstermektir, statik yapıcı metotların işlevinden söz etmektir. Eğer okurun birisi bu bölümü okuyup Class’lar hakkında genel bilgiye sahip oluyorsa bu bölüm işlevini yerine getirmiştir. Her ne kadar bu kitabın “Class’lar ve Nesneye Yönelik Programcılık” adlı bölümde Class’ların en önemli üyesi metotlardan söz edilmiş olsa bile metotlar ayrı bir bölümde ayrıntılı bir şekilde incelendi. Başka bir deyişle Memik Yanık’ın C# 3.0 kitabının 16 sayfalık 14. bölümünü okuyanlar metotlarla ilgili her tür bilgiye sahip olurlar.
Bu kitabın 15. ve 16. bölümlerinde İndeksleyiciler ve Interface’lerden söz edildi. Nesneye yönelik programcılıkta indeksleyiciler zor anlaşılan konulardan birisidir. Memik Yanık 10 sayfalık bu bölümü öyle bir kaleme aldı ki hayatında daha önce indeksleyici kavramını hiç duymamış olanlar bile ilk okumada yazılan her şeyi anlayabilirler. Benzer şeyler 12 sayfa boyunca Interface’ler hakkında bilgi verilen bölüm için de söylenebilir. Gelelim nesneye yönelik programcılığın hem önemli hem de zor anlaşılan 2 konusuna: Delegate ve Olaylar. Sizce Delegate’ler ve Olaylar neden zor ve genellikle yanlış anlaşılan 2 konudur. Tabi bazı arkadaşlar şöyle bir yorum getirecekler: Forma bir Button nesnesi yerleştirirsin sonra tasarım anında bu button nesnesini çift tıklarsın vs.. Zaten Delegate ve Olayların zor ve yanlış anlaşılmasının temelleri Button nesnesinden ve tasarım anında Button nesnesi çift tıklandığında hazırlanan kodun anlatılış şeklinde yapılmaktadır. Hal bu ki gerçek başkadır: Tasarım anında formdaki Button nesnesi çift tıklandığında Visual Studio programcının söz konusu Button nesnesinin Click olayını temsil edecek bir metot hazırlamak istediğini varsayıp Click olayının yapısına uygun bir metodu hazırlayıp Click olayıyla ilişkilendirmektedir. Tabii kullanıcı çalışma anında button nesnesini tıkladığında Button nesnesiyle ilgili olarak Click olayının nasıl tetiklendiğinden söz edilmediği için konu havada kalıyor. Memik Yanık bu düşünceyle 20 sayfa boyunca delegate ve olaylardan söz etti.
Bu kitabın 16 sayfalık Stuct ve Enum Tipleri adlı bölümünü okuyanlar Struct’ların ne olduğu, hangi amaçlarla kullanıldığı, sınıflarla struct’lar arasında ne gibi farkların olduğunu kısa sürede öğrenirler. Devamında Enum tipleri hakkında ayrıntılı bilgiye sahip olduğu gibi Enum’larla ilgili olarak başka kaynaklara başvurma ihtiyacı kalmaz. Gelelim bu kitabın 12 sayfalık Object Sınıfı adlı bölümüne. Bütün C# kitaplarında dakka 1 gol 1 misali daha ilk sayfadan Object sınıfından söz edilir. Okur kitabın sonuna kadar gelir ama hala Object sınıfı hakkında derli toplu bilgiye rastlamaz. Object sınıfı hakkında yeterli bilgiye sahip olmayan okur ToString() metoduyla ilgili olarak anlatılanları kavramakta zorlanır. Memik Yanık ne mi yaptı? Kitabının ortalarına bile gelmeden Object sınıfının önemli gördüğü özelliklerini ve metotlarını anlaşılır bir dille anlattı.
Bu kitabın mevcut yerli yabancı C# kitaplarına fark atılan bölümlerden bir diğeri Koleksiyon Sınıfları adlı 20. bölümdür. Bu bölümde 48 sayfa boyunca .NET Framework ile koleksiyon sınıfları ve bu sınıflarla ilgili bütün Interface’ler ayrıntılı bir şekilde anlatılmaktadır. Bu bölümün tümünü okuyan birisi kendisini koleksiyon uzmanı olarak ilan edebilir. Koleksiyonlar konusu oldukça kapsamlı olduğu için BitArray, BitConverter, Buffer, StringCollection ve StringDictionary sınıflarını ayrı bir bölüm olarak düzenledim. Tabi hemen aklınıza Generic koleksiyonları ne yaptınız Sorusu gelmiş olabilir. Bu kitabın 22. bölümünde 26 sayfa boyunca önce .NET Framework ile gelen Generic koleksiyon sınıflarından, devamında Generic sınıflarından söz ettim. Yurt dışında yalnızca Generic sınıflardan söz edilen bağımsız kitaplar yazıldığına göre bu kitabımda Generic koleksiyonları ve sınıfları bütün yönleriyle anlatmadığımı tahmin etmiş olmalısınız.
Şimdi sözünü edeceğim 3 bölüm gerek içerik gerekse de anlatım şekli bakımından mevcut(tabi bu değerlendirme benim görebildiğim kitaplarla sınırlıdır) kitaplara fark atmaktadır. Her ne kadar Hata Ayıklamak ve Debug İşlemleri adlı 18 sayfalık bölümün ilk 7 sayfasında anlatılan konuları hemen her kaynakta bulmak mümkün olsa bile bu bölümün diğer sayfalarında Debug, Trace, TextWriterTraceListener ve EventLogTraceListener sınıfları hakkında ayrıntılı bilgi verilmektedir. 27. bölümde ise hata yakalanırken kullanılan Exception sınıfları anlatılmaktadır. Tabii ki başka kaynaklarda da Exception sınıfları hakkında bilgi bulabilirsiniz. Gelelim şu Application sınıfına. Diğer kaynaklarda Application sınıfının bazı özellikleri ve metotları hakkında bilgi veriliyor olsa bile hiçbir kaynakta 14 sayfa boyunca yalnızca Application sınıfından söz edilmemektedir.
Bu kitabın içindekiler sayfasına bakan birisi Form Sınıfının Özellikleri, Olayları ve Metotları adlı bölümde 18 sayfa boyunca klasik olarak formların herkes tarafından bilinen özelliklerinden söz edildiğini sanabilir. İşte size bu bölümden alınma 3 satırlık kod.
protected override voidOnCreateControl()
{
base.OnCreateControl();
}
Tabii ki burada bu 3 satırlık kodun işlevinden söz etmeyeceğim, demek istediğim şudur: Bu koda başka basılı kaynaklarda rastlama ihtimaliniz son derece düşüktür. Başka bir deyişle bölümün adı Form Sınıfının Özellikleri olsa bile son derece teknik bilgiler içermektedir.
Bu kitabın diğer basılı kaynaklar bağlamında en sıradan bölümü “Sık Kullanılan Kontroller” adlı bölümüdür. Bu bölümde sık kullanılan 20’ye yakın kontrol 36 sayfa boyunca anlatılmaktadır. Bu kontroller anlatılırken daha önce az çok kod yazmış herkesin ilk bakışta tahmin edeceği özellik ve metotlardan söz edilmedi.
Bu kitabın Dosya ve Klasör İşlemleri adlı 36. bölümünde 28 sayfa boyunca C# kodu yazan birisinin gerek duyması muhtemel bütün bilgiler verilmektedir. Başka bir deyişle bu bölümü okuyanlar dosya ve klasör işlemleri bağlamında başka kaynaklara başvurma ihtiyacını duymazlar. Kapsam bir yana Memik Yanık’ın kitabının bu bölümünü okuyanlar yorulmazlar, anlatılanları izlemekte zorluk çekmezler.
Şimdi bu kitabın mevcut basılı kitaplar bağlamında bence açık ara önde olduğu 3 bölümden kısaca söz edeceğim. Birçok kaynakta C# uygulamaları dahilinde Word ve Excel’den nasıl yararlanıldığı kısaca anlatılırken Memik Yanık’ın kitabında bu konu 32 sayfa boyunca ayrıntılı bir şekilde anlatılmıştır. Ayrıca bu anlatma öyle bir anlatmadır ki ilk okumada anlaşılmayacak bir tek cümle bile yoktur. Benzer şekilde Api Fonksiyonları adlı bölümde Memik Yanık programcıların en çok gerek duyduğunu sandığı API fonksiyonlarını 32 sayfa boyunca anlatmıştır. Windows Mesajları adlı bölümde ise Memik Yanık 32 sayfa boyunca son derece teknik bir konuyu ilk okumada anlaşılacak yalınlıkta anlatmıştır. Bu kitabın hepsi ileri düzey konular olan diğer bölümlerinden söz etmeye gerek duymadım. Çünkü ileri düzey konulara gerek duyanlar zaten neyi aradıklarını biliyorlar.
Buraya kadar C# kitabımım yarısından biraz fazlasından söz ettim. Kitabın diğer bölümlerini de anlatıp bu yazının sayfa sayısını iki katına çıkarırsam tamamını okuyanların oranı düşüreceği için bu kitabım üzerine konuşmayı burada kesiyorum.