Aracılığıyla paylaş


Ana() ve komut satırı bağımsız değişkenleri

İpucu

Yazılım geliştirme konusunda yeni misiniz? İlk olarak Başlangıç öğreticileri ile başlayın. Bu öğreticilerde yeni uygulamalar için daha basit olan üst düzey deyimler kullanılır.

Mevcut bir kod tabanıyla mı çalışıyorsunuz? Mevcut uygulamaların çoğu açık Main bir yöntem kullanır. Bu makalede nasıl çalıştığı ve etkili bir şekilde nasıl kullanılacağı açıklanmaktadır.

C# uygulamasını başlattığınızda runtime Main yöntemini çağırır. Main yöntemi, bir C# uygulamasının giriş noktasıdır.

C# programının yalnızca bir giriş noktası olabilir. Bir Main yöntemi olan birden fazla sınıfınız varsa, giriş noktası olarak hangi yöntemin hizmetleneceğini belirtmek için programınızı derlerken Main derleyici seçeneğini kullanmanız gerekir. Daha fazla bilgi için bkz . StartupObject (C# Derleyici Seçenekleri). Aşağıdaki örnek, ilk eylemi olarak komut satırı bağımsız değişkenlerinin sayısını görüntüler:

class TestClass
{
    static void Main(string[] args)
    {
        Console.WriteLine(args.Length);
    }
}

Genel bakış

Main yöntemi yürütülebilir bir programın giriş noktasıdır. Programınız başlatıldığında, başka bir kod çalıştırılmadan önce çalışma zamanı Main çağırılır. Geri döndüğünde Main program sona erer. Bu kuralları izleyerek Main bildirirsiniz.

  • Bir sınıf veya yapı içinde bildirmeniz Main gerekir. Kapsayan class olabilir static.
  • Main olmalıdır static.
  • Main herhangi bir erişim değiştiriciye sahip olabilir.
  • Main, void, int, Task veya Task<int> döndürebilir.
  • Eğer ve yalnızca Main, bir Task veya Task<int> döndürürse, Main bildirimi async değiştiricisini içerebilir. Bu kural özellikle bir async void Main yöntemi dışlar.
  • Main yöntemini, komut satırı argümanlarını içeren bir string[] parametre ile veya parametresiz olarak bildirebilirsiniz. Windows uygulamaları oluşturmak için Visual Studio'yu kullandığınızda, parametreyi elle ekleyebilir veya komut satırı argümanlarını elde etmek için {method_name} yöntemini kullanabilirsiniz. Parametreler sıfır dizinli komut satırı bağımsız değişkenleridir. C ve C++'ın aksine, programın adı dizideki args ilk komut satırı bağımsız değişkeni olarak değerlendirilmez, ancak yöntemin GetCommandLineArgs() ilk öğesidir.

Aşağıdaki listede bildirimlerin Main permütasyonları gösterilmektedir:

static void Main() { }
static int Main() { }
static void Main(string[] args) { }
static int Main(string[] args) { }
static async Task Main() { }
static async Task<int> Main() { }
static async Task Main(string[] args) { }
static async Task<int> Main(string[] args) { }

Yukarıdaki örnekler bir erişim değiştirici belirtmediğinden varsayılan olarak örtük olarak private gösterilir. Herhangi bir açık erişim değiştirici belirtebilirsiniz.

Aşağıdaki tabloda tüm geçerli Main imzalar ve bunların ne zaman kullanılacağı özetlemektedir:

Main bildirim Kullanır args İçerir await Çıkış kodunu döndürür
static void Main() Hayır Hayır Hayır
static int Main() Hayır Hayır Evet
static void Main(string[] args) Evet Hayır Hayır
static int Main(string[] args) Evet Hayır Evet
static async Task Main() Hayır Evet Hayır
static async Task<int> Main() Hayır Evet Evet
static async Task Main(string[] args) Evet Evet Hayır
static async Task<int> Main(string[] args) Evet Evet Evet

Gereksinimlerinize en uygun basit imzayı seçin. İhtiyacınız yoksa komut satırı bağımsız değişkenlerine, string[] args parametresini atlayın. Çıkış kodu döndürmeniz gerekmiyorsa void veya Task kullanın. Zaman uyumsuz yöntemleri çağırmanız gerekiyorsa, Task veya Task<int> dönüş türüyle async kullanın.

Main() dönüş değerleri

int veya Task<int> döndürüldüğünde, programınız diğer programlara veya betiklere durum bilgisi gönderebilir. değerinin 0 dönüş değeri genellikle başarı, sıfır olmayan bir değer ise hata olduğu anlamına gelir.

Aşağıdaki örnek bir çıkış kodu döndürür:

class MainReturnValTest
{
    static int Main()
    {
        //...
        return 0;
    }
}

Programı çalıştırdıktan sonra çıkış kodunu de kontrol edebilirsiniz. PowerShell'de kullanın $LastExitCode. Toplu dosyada veya kabuk betiğinde %ERRORLEVEL% kullanın.

Eğer Main yöntemi await kullanıyorsa, Task veya Task<int> dönüş türüyle async olarak bildirin. Çalışma zamanı Main çağrısını yapar ve işlem sona ermeden önce döndürülen Task tamamlanmasını bekler. Dönüş türü void veya int olamaz çünkü async değiştirici, çalışma zamanının bekleyebileceği bir dönüş türü gerektirir. void ve int, devam eden çalışmayı temsil etmez; bu nedenle zaman uyumsuz işlemler tamamlanmadan önce işlem sona erebilir. Exit koduna ihtiyacınız yoksa Task kullanın, ihtiyacınız varsa Task<int> kullanın.

class Program
{
    static async Task<int> Main(string[] args)
    {
        return await AsyncConsoleWork();
    }

    private static async Task<int> AsyncConsoleWork()
    {
        return 0;
    }
}

Komut satırı argümanları

Komut satırı bağımsız değişkenlerini kabul etmek için Main bildiriminize bir string[] args parametre ekleyin. Bunlara ihtiyacınız yoksa parametresini atlarsınız. args parametresi, hiçbir zaman null olmayan bir String dizisidir; bağımsız değişken sağlanmazsa, boyutu Length sıfırdır.

Parse veya Convert kullanarak dize bağımsız değişkenlerini diğer türlere dönüştürebilirsiniz.

long num = long.Parse(args[0]);

İpucu

Komut satırı bağımsız değişkenlerini ayrıştırma karmaşık olabilir. İşlemi basitleştirmek için System.CommandLine kitaplığını kullanmayı göz önünde bulundurun.

Bir çalışma örneği için bkz. Komut satırı bağımsız değişkenlerinin nasıl görüntüleneceği.

C# dili belirtimi

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.