Aracılığıyla paylaş


C# programının genel yapısı

Tip

Yazılım geliştirme konusunda yeni misiniz? İlk olarak Başlangıç öğreticileri ile başlayın. Program yapısı hakkında bilgi edinmeden önce ilk C# programlarınızı yazarken size yol gösterirler.

Başka bir dilde mi deneyimlisiniz? C#'ye özgü söz dizimini görmek için Başlarken bölümüne göz atabilir, sonra buraya geri dönebilirsiniz.

Şu temel yapı taşları arasından C# programları oluşturursunuz: ad alanları türlerinizi düzenler, türleri (sınıflar, yapılar, arabirimler, sabit listeleri ve temsilciler) davranış ve verileri tanımlar ve deyimler ve ifadeler çalışma zamanında iş gerçekleştirir. Giriş noktasını nasıl yapılandırdığınız, seçtiğiniz uygulama stiline bağlıdır.

Uygulama stilinizi seçme

Bir C# programı oluşturduğunuzda, nasıl yapılandıracağınız hakkında iki bağımsız seçim yapın:

  • Dosya tabanlı mı yoksa proje tabanlı mı?
    • Dosya tabanlı bir uygulama, proje dosyası olmayan tek .cs bir dosyadan çalıştırılır.
    • Proje tabanlı bir uygulama bir .csproj dosya kullanır ve birden çok kaynak dosyaya yayılabilir.
  • Üst düzey deyimler veya Main yöntem?
    • Üst düzey deyimler, yürütülebilir kodu doğrudan dosyanın en üstüne yazmanıza olanak sağlar.
    • Bir Main yöntem, giriş noktasını açık bir statik yönteme sarmalar.

Hem proje tabanlı uygulamalar hem de dosya tabanlı uygulamalar giriş noktası stilini destekler.

Dosya tabanlı uygulamalar ile proje tabanlı uygulamalar karşılaştırması

C# 14 ve .NET 10'dan başlayarak, dosya tabanlı uygulamalar proje dosyası olmadan tek *.cs bir dosyada bulunan bir programı çalıştırmanıza olanak tanır. Aşağıdaki kodu adlı bir hello-world.cs dosyasına depolayın ve dotnet run hello-world.cs veya dotnet hello-world.cs ile çalıştırın.

#!/usr/bin/env dotnet
Console.WriteLine("Hello, World!");

Uyarı

#! satırı, Unix kabuklarının dosyayı doğrudan çalıştırmasını sağlar. Herhangi bir Unix sisteminde yürütme (+x) iznini ayarlayın ve dosyayı komut satırından çalıştırın.

Dosya tabanlı uygulamalar tüm C# söz dizimini destekler ve derleme sistemini yapılandırmak için ön işlemci yönergelerini kullanabilir. Küçük komut satırı yardımcı programları, prototipler ve denemeler için dosya tabanlı uygulamaları kullanın. Dosya tabanlı bir uygulama, bir dizindeki tek bir dosyadan oluşur:

my-app/
└── hello-world.cs

Proje tabanlı uygulamalar bir .csproj dosya ve .NET CLI komutlarıdotnet new, dotnet buildve dotnet run iş akışı kullanır. Programınız birden çok dosyaya yayıldığında veya ayrıntılı derleme yapılandırması gerektiğinde proje tabanlı uygulamaları seçin. Proje tabanlı bir uygulama, bir veya daha fazla kaynak dosyanın yanı sıra bir proje dosyası içerir:

my-app/
├── my-app.csproj
├── Program.cs
├── Models/
│   └── Person.cs
└── Services/
    └── GreetingService.cs

Dosya tabanlı uygulamanız büyürse, bunu kolayca proje tabanlı bir uygulamaya dönüştürebilirsiniz. Mevcut kaynak dosyanızdan bir proje dosyası oluşturmak için komutunu çalıştırın dotnet project convert .

Uygulamanızın başlangıçtan itibaren birden çok kaynak dosyaya ihtiyacı olduğunu biliyorsanız, proje tabanlı bir uygulamayla başlayın. Dönüştürme adımından kaçınırsınız ve kodunuzu hemen ayrı dosyalar halinde düzenleyebilirsiniz.

Üst düzey deyimler ile Main metod karşılaştırması

Üst düzey deyimleri kullanarak, yürütülebilir kodu bir sınıf ve Main yönteme sarmalamadan doğrudan bir dosyaya yazabilirsiniz. ile dotnet new consoleyeni bir konsol uygulaması oluşturduğunuzda bu stil varsayılandır. Aşağıdaki örnekte , üst düzey deyimleri kullanan modern bir C# programı gösterilmektedir:

Console.WriteLine("Hello, World!");

namespace YourNamespace
{
    class YourClass
    {
    }

    struct YourStruct
    {
    }

    interface IYourInterface
    {
    }

    delegate int YourDelegate();

    enum YourEnum
    {
    }
}

Projedeki yalnızca bir dosya en üst düzey deyimlere sahip olabilir ve giriş noktası bu dosyadaki program metninin ilk satırıdır. Daha büyük programlar oluştururken daha fazla program öğesi eklersiniz.

Programın giriş noktası olarak açık bir statik Main yöntem de tanımlayabilirsiniz:

// A skeleton of a C# program using an explicit Main method
namespace YourNamespace;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, World!");
    }
}

Her iki giriş noktası stili de dosya tabanlı ve proje tabanlı uygulamalarla çalışır. Her iki stil de aynı özellikleri destekler.

C# programları oluşturma ve çalıştırma

C# derlenmiş bir dildir. Proje tabanlı uygulamalar için dotnet build komutunu kullanarak kaynak dosyaları ikili bir pakete derleyin. Bir adımda derlemek ve çalıştırmak için kullanın dotnet run . dotnet.NET SDK'sına dahil olan CLI, C# projeleri oluşturmak, derlemek ve yönetmek için birçok araç sağlar.

Dosya tabanlı uygulamalar için, dotnet run hello-world.cs tek bir dosyayı doğrudan derler ve çalıştırır; proje dosyası gerekmez.

İfadeler ve deyimler

Kullanmaya başlama öğreticilerini izlediyseniz ifadeler ve deyimler yazdınız. Yazdığınız her kod satırı biri veya diğeriydi (ya da her ikisi). Şimdi bu terimleri tanımlayalım.

İfadeler ve deyimler, C# programının temel yapı taşlarıdır. İfade bir değer üretir. Deyimi bir eylem gerçekleştirir ve genellikle noktalı virgülle biter.

İfadeler şunlardır:

  • 42 (sabit değer)
  • x + y (aritmetik işlem)
  • Math.Max(a, b) (değer üreten yöntem çağrısı)
  • condition ? trueValue : falseValue (koşullu ifade)
  • new Person("John") (nesne oluşturma)

Deyimi bir eylem gerçekleştirir. Deyimler program akışını denetler, değişkenleri bildirir veya işlemleri çağırır. İfadeler şunlardır:

  • int x; (bildirim beyanı)
  • int x = 42; (başlatma ile bildirim deyimi)
  • Console.WriteLine("Hello"); (yöntem çağrısı ifadeleri)
  • if (condition) { /* code */ } (koşullu deyim)
  • return result; (return deyimi)

İfadeler genellikle başka ifadeler içerir ve bu ifadeler diğer ifadelerin içerisinde yer alabilir. Örneğin, aşağıdaki tanımlama ifadesi bir toplama işleminin sonucunu f değişkenine atar. Bu toplama ifadesi iki yöntem çağrısı ifadesinin sonuçlarını ekler:

var maxResult = Math.Max(a, b) + Math.Max(c, d);

İfadeler hakkında ayrıntılı bilgi için bakınız İfadeler. İfade gövdeli üyeler ile ilgili bilgi için bkz. İfade gövdeli üyeler.