C#nedir?com
 
YAZAR HAKKINDA
Sefer Algan
Sefer Algan
http://www.seferalgan.com
İletişme geçmek için tıklayın.
71 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  C# / VC#/.NET Sefer Algan
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 20.10.2002
Okunma Sayısı : 65236
Yorum Sayısı : 8     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 12.4.2021
Turhal Temizer
Mac OS/X Removing CUDA 12.4.2021
Burak Selim Şenyurt
Tie Fighter Değil, Project Tye! 12.4.2021
Burak Selim Şenyurt
Stackoverflow Sevgi Anketinde Yıllardır Bir Numara Çıkan Programlama Dili Rust Kimdir? 12.4.2021
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Visual C# ile Programlamaya Giriş
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Visual C#, Visual Studio ailesinin yeni üyesidir, bu yeni dil c ve c++ temelleri üzerine kurulmasına rağmen komponent temelli programlama tekniğini geliştirmek için birtakım yeni özellikler eklenmiştir. C# dilinin sentaksı C ve C++ programcılarına çok tanıdık gelecektir. Bundan şüpheniz olmasın.


Genel Açıklamalar

Bu yazıda göreceğimiz basit uygulamada QuickSort algoritmasını kullanarak nasıl basit bir C# projesinin oluşturulduğunu göreceğiz. Bu uygulamada bir c# programında en sık kullanılan yapılardan olan dosyaya ve console ekranına okuma/yazma, fonksiyon oluşturma ve basit dizilerin kullanımı açıklanacaktır.

Bu yazı kesinlikle C# dilinin tüm özelliklerinin anlatıldığı yazı değildir. Bu yazı C# dilini öğrenmek için sizlere bir başlangıç noktası sunar.

Önerilen Kaynaklar

Visual Studio.NET (Beta 2 veya sonrası) örnek kaynak kodu derlemeniz için gereklidir. C/C++ bilgisi size bu yazıyı anlamanızda yardımcı olabilir ama gerekli değildir.

Adım 1. Projeye Başlama

Visual Studio ile program geliştirme organizasyonu solution(çözüm) çalışma alanları üzerindendir. Solution dediğimiz ortam bir veya daha fazla projeyi içerebilir. Bu makale için tek bir C# projesi içeren bir solution oluşturacağız.

Yeni bir proje oluşturmak

  1. Visual Studio.NET ortamından, File | New | Project menülerini seçin.

  2. Soldan(Project Types) Visual C#, sağdan(Templates) ise Console Application butonlarını seçin.

  3. Projenizin adını belirleyin ve projenizin hangi klasörde saklanacağını belirleyin.Bu klasör Visual Studio tarafından otomatik oluşturulur.Proje adı olarak ben quicksort yazıyorum.Siz istediğiniz adı verebilirsiniz.

  4. OK tuşuna basalım ve yola koyulalım.

"Visual C# Solution" ortamımız

Visual Studio.NET içinde bir Visual C# projesi bulunan bir solution oluşturdu. Proje assemblyinfo.cs ve class1.cs adlı iki tane dosya içermektedir. Bundan sonraki adımlarda projemizi nasıl derleyeceğimizi ve bu iki dosya hakkında detaylı bilgiyi öğreneceğiz.

Adım 2. Hello, World!

Kusura bakmayın ama geleneği bozmadan ilk defa C programlama dili ile yazılmış olan "Hello, World!" programını c# ile yazacağız. Bu bir gelenektir ve her yeni bir dili öğrenmeye başladığınızda bunu siz de göreceksiniz.

Kaynak Kodu Değiştirme

  1. Solution Explorer 'da bulunan 'class1.cs'dosyasına çift tıklayın. Solution Explorer 'ı göremiyorsanız, view menüsünü kullanarak görünür hale getirebilirsiniz.
  2. Şablonla oluşturulmuş koda aşağıda kırmızı ile yazılmış kısmı ekleyin (class1.cs). using System;

    namespace quicksort
    {
        ///
        /// Summary description for Class1.
        ///

        class Class1
        {
            static void Main(string[] args)
            {
                //
                // TODO: Add code to start application here
                //
                Console.WriteLine ("Hello, C#.NET World!");
            }
        }
    }

  3. Dikkat edin siz kodunuzu yazdıkça Visual Studio size sınıflar ve fonksiyon adları hakkında bilgi verir, çünkü .NET Framework tip bilgisini yayınlamaktadır.


Uygulamamızı Derleyelim

  1. Programımızda değişiklik yaptığımıza göre artık Build menüsünden Build 'ı seçerek programımızı derleyebiliriz.

  2. Hata ve mesajlar en altta bulunan "Output Window" denilen pencerede görünür. Eğer herhangi bir hata yoksa uygulamamızı Debug menüsü altında bulunan 'Start without Debugging' menüsüne tıklayarak çalıştırabiliriz.


Programımızın Çıktısı

Aşağıda programımızın Visual C# içinden çalıştırılarak oluşturulmuş çıktısının ekran görüntüsü mevcuttur.

Değişiklikleri Anlamak

System.Console sınıfına ait WriteLine() fonksiyonu kendisine argüman olarak gönderilen dizgeyi sonuna satır sonu karakteri de ekleyerek ekrana yazar.
Bu fonksiyon integer ve floating-point gibi diğer veri tiplerini de argüman olarak alabilir.

Program belleğe yüklendiğinde programın kontrolu Main() fonksiyonuna gelir.WriteLine() fonksiyonunu oraya yazmamızın sebebi budur.

Adım 3. Programın Yapısı

Şimdi basit bir Hello World uygulaması geliştirmiş olduk, şimdi de bir Visual C# uygulamasının basit componentlerini inceleyelim.

Kaynak Kod Yorumları

// karakterlerinden sonra gelen ve satırın sonuna kadar olan sözcükler yorum satırlarıdır ve C# derleyicisi tarafından görünmezler. Aynı zamanda birden fazla satıra yorum eklemek istiyorsak /* */ karakterleri arasına yorum yazarız.
// Bu satır derleyici tarafından görülmez
/* Aynı zamanda bu blok da
derleyici tarafından görünmez*/

Using Komutu

.NET Framework geliştiricilere yüzlerce yararlı sınıflar sunar. Mesela, Console sınıfı, console ekranına ait girdi ve çıktıları işler. Bu sınıflar hiyerarşik bir ağaç içinde organize edilmiştir. Aslında Console sınıfının tam ismi System.Console ' dur. Diğer sınıflar ise System.IO.FileStream ve System.Collections.Queue. içindedirler.

using komutu bize sınıfın ismini namespace(isim alanı) kullanmadan kullanabilmemizi sağlar.
Aşağıda kırmızı ile yazılan yazılar using komutunun uygulamasının sonucudur. using System;
class Class1
{
    static void Main(string[] args)
    {
        System.Console.WriteLine ("Hello, C#.NET World!");
        Console.WriteLine ("Hello, C#.NET World!");
    }
}

Sınıf Bildirimi

C++ ve Visual Basic 'den farklı olarak C# 'da bütün fonksiyonlar bir sınıf içerisinde olmalıdır. C# 'da bir sınıf tanımlamak için class anahtar sözcüğü kullanılır.Bu durumda bizim uygulamamızda, Class1 sınıfı Main() adında bir fonksiyon içerir. Eğer sınıf bildirimini bir isim alanı blokları içine alırsak sınıflarımızı CSharp.QuickSortApp şeklinde bir hiyerarşi içine alabiliriz.

Sınıflar hakkında çok derin bir bilgi vermeyi düşünmüyorum.Fakat bizim örneğimizin neden bir parçası olduğunu açıklamakta fayda gördüm.

Main() Fonksiyonu

Program belleğe yüklendiğinde Main() fonksiyonu programın kontrolünü eline alır, bu yüzden başlangıç kodlarımızı daima Main() fonksiyonu içinde yazmalıyız. Komut satırı argümanları ise bir string dizisi olan args dizisine aktarılır.(mesela: delete x ) Burada programımızın adı delete ise x bir komut satırı argümanıdır.

Adım 4. Console Girişi

Şimdi işlemlerimize bir QuickSrot uygulaması geliştirerek devam edelim. İlk yapmamız gereken kullanıcya hedef ve kaynak dosyasının isimlerini sormak olacaktır.

Source Code Modifications

  1. class1.cs dosyasına aşağıda kırmızı ile yazılanları yazın. Burada sınıf ismi ve isimalanı ismi bizim için çok önemli değildir. // namespaces ekleme
    using System;

    // namespace tanımlama
    namespace MsdnAA
    {
        // uygulama sınıfı tanımlama
        class QuickSortApp
        {
            // uygulama oluşturma
            static void Main (string[] szArgs)
            {
                // Programın hakkında
                Console.WriteLine ("QuickSort C#.NET Sample Application\n");

                // kullanıcıdan bilgi alma
                Console.Write ("Source: ");
                string szSrcFile = Console.ReadLine ();
                Console.Write ("Output: ");
                string szDestFile = Console.ReadLine ();
            }
        }
    }

Console'dan Okuma

Console sınıfının ReadLine() metodu kullanıcıya bir giriş ekranı sunar ve geriye kullanıcının girdiği dizgeyi(string) geri döndürür.Bu metod bellek tahsisatını otomatik olarak kendi içinde yapmaktadır ve .NET garbage collector mekanizması sayesinde iade etmeniz gereken herhangi bir alan yoktur.

Program Çıktısı

Programı Debug | Start Without Debugging menülerini kullanarak çalıştırın.
Aşağıda programımızın son halinin çıktısını görüyorsunuz.

Adım 5. Dizilerin Kullanımı

Programımız sıralama yapmadan önce girişten satırları alarak bir dizi içinde saklaması gerekir. Şimdi .NET temel sınıflarından olan ArrayList sınıfını inceleyeceğiz.

Kaynak Kod Değişikliği

  1. class1.cs dosyası içinde aşağıda kırmızı ile gösterilen yerleri ekleyin. // isim alanı ekleme
    using System;
    using System.Collections;

    // isimalanı tanımlama
    namespace c#nedircom
    {
        // uygulama sınıfı tanımlama
        class QuickSortApp
        {
            // uygulama başlangıcı
            static void Main (string[] szArgs)
            {
               
                Console.WriteLine ("QuickSort C#.NET Sample Application\n");

                // Dosya isimlerini almak için komut yaz
                Console.Write ("Source: ");
                string szSrcFile = Console.ReadLine ();
                Console.Write ("Output: ");
                string szDestFile = Console.ReadLine ();

                // TODO: Read contents of source file
                ArrayList szContents = new ArrayList ();
            }
        }
    }

ArrayList sınıfının kullanımı

ArrayList sınıfına direkt ulaşabilmek için System.Collections isimalanını projemize using komutuyla ekliyoruz. Bu sınıf dinamik olarak büyüyüp küçülebilen nesne dizileri için kullanılır. Yeni bir eleman eklemek için basit bir şekilde Add() metodunu kullanabilirsiniz. Bu diziye eklenen yeni eleman orijinal nesne için referans olarak kullanılır, ve garbage collector alan iadesi için hazır olacaktır.
string szElement = "insert-me";
ArrayList szArray = new ArrayList ();
szArray.Add (szElement); Dizinin var olan bir elemanına ulaşabilmek için, diziye ait Item() metoduna ulaşmak istediğimiz elemanın sıra(index) numarasını geçebiliriz.Kısaca [] operatörlerini kullanarak da istediğimiz elemana Item() metodunu kullanmadan da ulaşabiliriz.

Console.WriteLine (szArray[2]);
Console.WriteLine (szArray.Item (2)); ArrayList sınıfının daha birçok metodu vardır, ancak biz bu uygulamada sadece ekleme ve okuma yapacağız. ArrayList sınıfına ait tüm metod ve özellikleri öğrenmek için MSDN kitaplığına başvurabilirsiniz.

Adım 6. File Girdi/Çıktı(Input/Output)

Şimdi isterseniz dosyadan okuma ve dosyaya yazma işlemlerini gerçekleştirelim. Dosyadaki her satırı okuyup, bir string dizisinin her elemanını bir satır gelecek şekilde ekleyeceğiz.Sonraki aşamada ise QuickSort algoritmasını kullanarak diziyi sıralı bir şekilde yazacağız.

Kaynak Kod Değişikliği

  1. class1.cs dosyasına aşağıda kırmızı ile yazılanları yazın. Burada sınıf ismi ve isimalanı ismi bizim için çok önemli değildir. // isimalanı ekleme
    using System;
    using System.Collections;
    using System.IO;


    namespace MsdnAA
    {

        class QuickSortApp
        {

            static void Main (string[] szArgs)
            {
                string szSrcLine;
                ArrayList szContents = new ArrayList ();
                FileStream fsInput = new FileStream (szSrcFile, FileMode.Open,FileAccess.Read);
                StreamReader srInput = new StreamReader (fsInput);
                while ((szSrcLine = srInput.ReadLine ()) != null)
                {
                    // dizinin sonuna ekleme 
                    szContents.Add (szSrcLine);
                }
                srInput.Close ();
                fsInput.Close ();

                // TODO: Buraya QuickSort fonksiyonu gelecek

                // sıraları satırları yazma
                FileStream fsOutput = new FileStream (szDestFile,FileMode.Create, FileAccess.Write);
                StreamWriter srOutput = new StreamWriter (fsOutput);
                for (int nIndex = 0; nIndex < szContents.Count; nIndex++)
                {
                    // hedef dosyaya satır yazma
                    srOutput.WriteLine (szContents[nIndex]);
                }
                srOutput.Close ();
                fsOutput.Close ();

                // başarıyı kullanıcıya bildirme
                Console.WriteLine ("\nThe sorted lines have been written.\n\n");
            }
        }
    }

Kaynak Dosyadan Okuma

Kaynak dosyayı açmak için FileStream sınıfını ve StreamReader sınıfını kullanarak ReadLine() metodu ile dosyayı okuyoruz. ReadLine() metodunu dosyanın sonunu ifade eden NULL değerine geri dönene kadar çağırıyoruz.Döngü içinde okunan satırları dizinin içine ekliyoruz ve sonrada tüm nesneleri kapatıyoruz.

Hedef Dosyaya Yazma

Dosyaya yazarken dizinin sıralanmış olduğunu varsaydık ve öyle devam ettik. Aynı şeklide FileStream nesnesini ve StreamWriter sınıfını kullanarak hedef dosyaya yazma işlemini yaptık.

Adım 7. Fonksiyon Yaratma

Son aşamada diziyi QuickSort algoritması ile sıralayan fonksiyonu yazmaya geldi. Bu fonksiyonu uygulamamızın ana sınıfının içine koyacağız.

Kaynak Kod Değişikliği

  1. class1.cs dosyasına aşağıda kırmızı ile yazılanları yazın. Burada sınıf ismi ve isimalanı ismi bizim için çok önemli değildir. // isim alanı ekleme
    using System;
    using System.Collections;
    using System.IO;


    namespace c#nedircom
    {

        class QuickSortApp
        {

            static void Main (string[] szArgs)
            {
                ... ... ...

                // QuickSort fonksiyonuna parametrelerin geçişi
                QuickSort (szContents, 0, szContents.Count - 1);

                ... ... ...
            }

            // QuickSort fonksiyonu
            static void QuickSort (ArrayList szArray, int nLower, int nUpper)
            {

                if (nLower < nUpper)
                {
                    // Ayırma ve sıralama işlemi
                    int nSplit = Partition (szArray, nLower, nUpper);
                    QuickSort (szArray, nLower, nSplit - 1);
                    QuickSort (szArray, nSplit + 1, nUpper);
                }
            }

            // QuickSort bölmelere ayırma
            static int Partition (ArrayList szArray, int nLower, int nUpper)
            {
                // İlk elemanı bulma
                int nLeft = nLower + 1;
                string szPivot = (string) szArray[nLower];
                int nRight = nUpper;

                // Dizi elemanlarını bölme
                string szSwap;
                while (nLeft <= nRight)
                {
                   
                    while (nLeft <= nRight)
                    {
                        if (((string) szArray[nLeft]).CompareTo (szPivot) > 0)
                            break;
                        nLeft = nLeft + 1;
                    }
                    while (nLeft <= nRight)
                    {
                        if (((string) szArray[nRight]).CompareTo (szPivot) <= 0)
                            break;
                        nRight = nRight - 1;
                    }

                    // Eğer uygunsa yer değiştirme işlemi yap
                    if (nLeft < nRight)
                    {
                        szSwap = (string) szArray[nLeft];
                        szArray[nLeft] = szArray[nRight];
                        szArray[nRight] = szSwap;
                        nLeft = nLeft + 1;
                        nRight = nRight - 1;
                    }
                }

                szSwap = (string) szArray[nLower];
                szArray[nLower] = szArray[nRight];
                szArray[nRight] = szSwap;
                return nRight;
            }
        }
    }

QuickSort() Fonksiyonu

Bu fonksiyon alt sınır, üst sınır ve bir dizi olmak üzere 3 tane parametre almaktadır. QuickSort fonksiyonu Partition() fonksiyonunu çağırarak diziyi iki parçaya ayırır. Bu parçaların birinde belirlenen bir diziden önceki ,diğer parçasında ise sonraki elemanlar bulunur. Sonra fonksiyon tekrar kendini çağırarak bu iki parçanın sıralanmasını sağlar.
Yukarıdaki kodlarda yeni gördüğümüz metod CompareTo() metodudur. Bu metod iki string ifadesini karşılaştırır.

QuickSort Uygulamasını Çalıştırma

Bu adım uygulamamızın son adımı olacaktır.Şimdi programımızı derleyip çalıştırabiliriz. Programımızın çalışması için bir text dosyası oluşturmamız sıralama yapabilmek için gerekecek. Exe dosyasının bulunduğu dizini text dosyasını oluşturup programı çalıştıralım.

Programın Çıktısı

Aşağıda programımızı çalıştırdıktan sonraki ekran çıktısı mevcuttur. Yukarıdaki ekranda ise output.txt dosyasında meydana gelen değişiklikleri görebilirsiniz.

Adım 8. Debugger Kullanmak

Debugger aracı programımızın problemlerini çözmek için önemli ve gerekli bir araçtır. İyi bir başlangıç yaptığımıza göre son aşamada programımız içinde nasıl dolaşacağımıza ve QuickWatch' ı nasıl kullanacağımıza bakalım.

Breakpoint' leri Ayarlama

Program Debugger içinde çalışırken eğer breakpoint olan bir noktaya gelinirse program sonlandırılır ve debugger control 'ü bizim elimize geçer. Herhangi bir satıra breakpoint koymak için ilgili satıra sağ tıklayıp aşağıdaki gibi Insert BreakPoint menüsüne tıklayın.
BreakPoint bulunan satırlar kırmızı ile gösterilir. BreakPoint ' i kaldırmak için ilgili satıra sağ tıklayıp Remove BreakPoint menüsünü seçin.

Program içinde Adım Adım ilerlemek

Aşağıdaki şekilde görüldüğü gibi bir breakpoint oluşturduktan sonra debugger ile programımızı çalıştıralım. Debug menüsünden daha önceden de yaptığımızı gibi Start Without Debugging yerine Start menüsüne tıklayın. Bu şekilde programı çalıştırdığımızda program debugger ile çalışmaya başlayacaktır, ve breakpoint 'ler aktif olmaya başlayacaktır.

Program breakpoint 'in olduğu noktaya geldiğinde, debugger programın kontrolünü alır. Aşağıdaki şekilde görüldüğü gibi sarı okla programın geldiği nokta gösterilir.
Kod içinde adım adım ilerlemek için menü çubuğundan Debug | Step Over ' ı seçerek sarı okun hareketini izleyin. Debug | Step Into komutu gitmek istediğimiz fonksiyona gitmemizi sağlar. Aşağıda iki defa Step Over menüsünü seçtikten sonra kaynak kodumuzun görüntüsü mevcuttur.

Eğer programımızın diğer bir sonlandırıcı nedene (yeni bir breakpoint, exception , exit, debug) gelene kadar devam etmesini istiyorsanız Debug | Continue menülerini seçin.

Değişken Değerlerini Takip Etme

Debugger 'ın kontrolü bizde iken farenin imlecini kaynak kodda istediğimiz değişken üzerine götürerek değişkenin o anki değerini öğrenebiliriz.
Aynı zamanda bir değişkene sağ tıklayarak QuickWatch menüsünü açabilirsiniz. QuickWatch ile değişken hakkında daha detaylı bilgiler elde edebilirsiniz. Mesela diziler hakkında aşağıdaki şekilde görüldüğü gibi bilgiler elde edilebilir.

Diğer Debugger Araçları

Visual Studio yukarıda bahsettiğimiz araçları dışında farklı araçlarda barındırır. Mesela Call Stack Wiever aracı ile o an hangi fonksiyonun çağrıldığı ile ilgili bilgiyi elde edebilirsiniz. Bellekteki değerleri ve bir prosesteki thread 'leri de aynı anda görebileceğimiz araçlar mevcuttur.

Son Söz & Sonuç

Bu yazının amacı sizlere Visual Studio ile nasıl basit bir uygulamanın yapılacağını adım adım göstermekti. Diğer .NET ve C# kaynaklarını araştırmak için sizi cesaretlendirebildiysek ne mutlu bize. Bu yazıyı buraya kadar okuduğunuza göre en azından şu aşamada çalışan bir projeniz var, istediğiniz gibi üzerinde değişiklikler yapıp sonucu görebilirsiniz.

Bu yazı "Microsoft MSDN Magazine" 'den Türkçeye tercüme edilmiştir.
Çeviren : Sefer Algan

Makale:
Visual C# ile Programlamaya Giriş C#, Visual C# ve .NET Sefer Algan
  • Yazılan Yorumlar
  • Yorum Yaz
MAY
13
2014
kullanıcı şifreyi 123 olarak girene kadar tahmin sayısını gösteren form olusturma c# ödevimde yardımcı olurmusunuz ?
MAY
13
2014
kullanıcı şifreyi 123 olarak girene kadar tahmin sayısını gösteren form olusturma c# ödevimde yardımcı olurmusunuz ?
AĞU
29
2012
Çok güzel anlatım. Teşekkürler.
HAZ
17
2012
Teşekkürler. Ben de bu konu ile ilgili bir makale yayınladım. http://sonergonul.net/?p=32
NİS
13
2006
C# hakkında gayet iyi bi fikir verdi bu yazı bana. En azından bu dilin genel mantığını anladım. Bundan sonrası daha rahat olur kanısındayım. Teşekkürler...
EYL
15
2005
Hocam bence konu güzel anlatılmış ama programlamaya giriş başlığı altında anlatılması hata.. tabii bu benim fikrim çünkü daha fonksiyan ve dizi kavramları anlatılmadan bu örnekler biraz ağır kaçmış gibi geldi bana.. makale için teşekkürler...
MAY
25
2005
5. adım dizilerin kullanımı bölümünde, örnek kodda namespace c#nedircom olarak yazılmış , fakat console applicationı çalıştırma sırasında aşağıdaki hatayı veriyor. Preprocessor directives must appear as the first non-whitespace character on a line # işareti namespacelerde kullanılamayan özel bir simge mi?Yanıtı bilen varsa ,cevaplarsa sevinirim.
TEM
23
2004
mükemmel
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor