Üst düzey deyimler-yöntemler olmadan programlar Main

C# 9 ' dan itibaren bir Main konsol uygulaması projesine bir yöntemi açıkça eklemeniz gerekmez. Bunun yerine, en üst düzey deyimler özelliğini kullanarak yazmanız gerektiğini kodun en aza indirmenize olanak sağlayabilirsiniz. Bu durumda, derleyici uygulama için bir sınıf ve Main Yöntem giriş noktası oluşturur.

C# 10 ' da tüm C# programı olan bir program. cs dosyası aşağıda verilmiştir:

Console.WriteLine("Hello World!");

üst düzey deyimler, Azure işlevleri ve GitHub eylemleri gibi küçük yardımcı programlara yönelik basit programlar yazmanızı sağlar. Ayrıca, yeni C# programcıları için kod öğrenmeye ve yazmaya başlamanıza da daha kolay hale gelir.

Aşağıdaki bölümlerde, en üst düzey deyimlerle yapabilecekleriniz ve yapabileceklerinize ilişkin kurallar açıklanmaktadır.

Yalnızca bir üst düzey dosya

Uygulamanın yalnızca bir giriş noktası olması gerekir. Bir projede en üst düzey deyimlerle yalnızca bir dosya olabilir. En üst düzey deyimleri bir projede birden fazla dosyaya koymak aşağıdaki derleyici hatasına neden olur:

CS8802 yalnızca bir derleme birimi en üst düzey deyimlerine sahip olabilir.

Bir proje, en üst düzey deyimleri olmayan herhangi bir sayıda ek kaynak kodu dosyasına sahip olabilir.

Başka giriş noktası yok

Bir Main yöntemi açıkça yazabilirsiniz, ancak giriş noktası olarak çalışamaz. Derleyici aşağıdaki uyarıyı verir:

CS7022, programın giriş noktası genel koddur; ' Main () ' giriş noktası yoksayılıyor.

Üst düzey deyimler içeren bir projede, proje bir veya daha fazla yöntem içerse bile, giriş noktasını seçmek için -Main derleyici seçeneğini kullanamazsınız Main .

using yönergeler

Using yönergelerini eklerseniz, bu örnekte olduğu gibi, ilk olarak dosyada gelmelidir:


using System.Text;

StringBuilder builder = new();
builder.AppendLine("Hello");
builder.AppendLine("World!");

Console.WriteLine(builder.ToString());

Genel ad alanı

En üst düzey deyimler, genel ad alanında örtülü olarak bulunur.

Ad alanları ve tür tanımları

En üst düzey deyimlerle bir dosya ad alanları ve tür tanımları da içerebilir, ancak en üst düzey deyimlerden sonra gelmesi gerekir. Örnek:

MyClass.TestMethod();
MyNamespace.MyClass.MyMethod();

public class MyClass
{
    public static void TestMethod()
    {
        Console.WriteLine("Hello World!");
    }

}

namespace MyNamespace
{
    class MyClass
    {
        public static void MyMethod()
        {
            Console.WriteLine("Hello World from MyNamespace.MyClass.MyMethod!");
        }
    }
}

args

En üst düzey deyimler, args girilen tüm komut satırı bağımsız değişkenlerine erişmek için değişkenine başvurabilir. argsDeğişken hiçbir şekilde null değildir ancak Length hiçbir komut satırı bağımsız değişkeni sağlanmazsa sıfır olur. Örnek:

if (args.Length > 0)
{
    foreach (var arg in args)
    {
        Console.WriteLine($"Argument={arg}");
    }
}
else
{
    Console.WriteLine("No arguments");
}

await

Kullanarak zaman uyumsuz bir yöntem çağırabilirsiniz await . Örnek:

Console.Write("Hello ");
await Task.Delay(5000);
Console.WriteLine("World!");

İşlem için çıkış kodu

intUygulama sona erdiğinde bir değer döndürmek için, return ifadesini döndüren bir yöntemde olduğu gibi kullanın Main int . Örnek:

string? s = Console.ReadLine();

int returnValue = int.Parse(s ?? "-1");
return returnValue;

Örtük giriş noktası yöntemi

Derleyici, en üst düzey deyimlerle bir proje için program giriş noktası olarak kullanılacak bir yöntem oluşturur. Bu yöntemin adı aslında değil Main , kodunuzun doğrudan başvurılemeyeceğini bir uygulama ayrıntısı. Yönteminin imzası, en üst düzey deyimlerin anahtar sözcüğünü mi yoksa deyimini mi içerdiğini bağlıdır await return . Aşağıdaki tabloda, yöntemi için tablodaki Yöntem adı kullanılarak yöntem imzasının nasıl görünebilecekleri gösterilmektedir Main .

Üst düzey kod içerir Örtük Main imza
await ve return static async Task<int> Main(string[] args)
await static async Task Main(string[] args)
return static int Main(string[] args)
Hayır await veya return static void Main(string[] args)

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.

Özellik belirtimi-en üst düzey deyimler