Ana
() ve komut satırı bağımsız değişkenleri
Main bir
C# uygulamasının giriş noktasıdır. (Kitaplıklar ve hizmetler giriş noktası Main olarak yöntem gerektirmez.) Uygulama başlatıldığında, Main yöntemi çağrılan ilk yöntemdir.
C# programında yalnızca bir giriş noktası olabilir. Yöntemi olan birden fazla sınıfınız varsa, giriş noktası olarak hangi yöntemin kullan gerektiğini belirtmek için Main programınızı
StartupObject derleyici Main seçeneğiyle derlemeniz gerekir. Daha fazla bilgi için bkz.
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
PHP- Kodu
using System;
class TestClass
{
static void Main(string[] args)
{
// Display the number of command line arguments.
Console.WriteLine(args.Length);
}
}
C# 9'dan başlayarak yöntemini atlayarak aşağıdaki örnekte olduğu gibi C# deyimlerini yönteminde olduğu
Main Main gibi yazabilir:
PHP- Kodu
using System;
Console.WriteLine("Merhaba ircrehberi!");
Genel Bakış
- Main yürütülebilir bir programın giriş noktasıdır; program denetimi burada başlar ve biter.
- Main bir sınıf veya yapı içinde bildirilir. Main olmalı static ve olması public gerekir. (Önceki örnekte, varsayılan .) erişimini private alır. Kapsayan sınıfın veya yapının statik olması gerekmez.
- Main , veya void int C# 7.1 ile başlayarak veya Task dönüş Task<int> türüne sahip olabilir.
- yalnızca veya Main döndürürse Task Task<int> bildirimi Main async değiştiriciyi içerebilir. Bu özellikle bir yöntemi async void Main dışlar.
- Main komut satırı bağımsız değişkenlerini içeren bir parametre string[] ile veya olmadan bildirebilirsiniz. Windows Visual Studio için bir komut satırı kullanırken, parametresini el ile ekleyebilir veya komut satırı bağımsız değişkenlerini GetCommandLineArgs() almak için yöntemini kullanabilirsiniz.
Parametreler sıfır dizinli komut satırı bağımsız değişkenleri olarak okunur. C ve C++ ' dan farklı olarak, programın adı dizideki ilk komut satırı bağımsız değişkeni olarak değerlendirilmez args , ancak yöntemin ilk öğesidir GetCommandLineArgs() .
Aşağıdaki listede geçerli imzalar gösterilmektedir Main :
PHP- Kodu
public static void Main() { }
public static int Main() { }
public static void Main(string[] args) { }
public static int Main(string[] args) { }
public static async Task Main() { }
public static async Task<int> Main() { }
public static async Task Main(string[] args) { }
public static async Task<int> Main(string[] args) { }
Yukarıdaki örneklerin tümü
public erişimci değiştiricisini kullanır. Bu tipik, ancak gerekli değildir.
asyncVe ' nin eklenmesi Task , Task<
int> konsol uygulamalarının
await ' de başlaması ve zaman uyumsuz işlemler gerektiğinde program kodunu basitleştirir Main .
Main () dönüş değerleri
Yöntemini
int Main aşağıdaki yöntemlerden biriyle tanımlayarak yönteminden dönüştürebilirsiniz:
Ancak, int döndürerek veya
Task<int> programın durum bilgilerini yürütülebilir dosyayı çağıran diğer programlara veya betiklere iletebilir.
Aşağıdaki örnekte, işlem çıkış koduna nasıl erişilebilirsiniz?
Bu örnekte
.NET Core komut satırı araçları 1.
.NET Core komut satırı araçları hakkında bilgi edinmek için bu
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
çalıştırarak yeni bir uygulama
dotnet new console oluşturun.
Main Program.cs'de yöntemini aşağıdaki gibi değiştirin:
PHP- Kodu
// Save this program as MainReturnValTest.cs.
class MainReturnValTest
{
static int Main()
{
//...
return 0;
}
}
Bir program Windows'da yürütülürken, işlevden döndürülen herhangi Main bir değer bir ortam değişkende depolanır. Bu ortam değişkeni bir toplu iş
ERRORLEVEL dosyasından veya
$LastExitCode PowerShell'den kullanılarak alınabilirsiniz.
Ardından, uygulamayı çalıştırmak ve sonucu görüntülemek için bir
PowerShell betiği oluşturun. Aşağıdaki kodu bir metin dosyasına yapıştırın ve projeyi
test.ps1 içeren klasöre kaydedin.
PowerShell istemine yazarak
test.ps1 PowerShell betiği çalıştırın.
Kod sıfır döndüren toplu iş dosyası başarılı olduğunu bildirecek. Ancak
MainReturnValTest.cs dosyasını sıfır olmayan bir değer iade etmek ve programı yeniden derlemek için değiştirirsanız, PowerShell betiği sonraki yürütmesi hata bildirecek.
PHP- Kodu
dotnet run
if ($LastExitCode -eq 0) {
Write-Host "Execution succeeded"
} else
{
Write-Host "Execution Failed"
}
Write-Host "Return value = " $LastExitCode
Çıktı
PHP- Kodu
Execution succeeded
Return value = 0
Zaman Uyumsuz Ana dönüş değerleri
için bir dönüş değeri bildirebilirsiniz, derleyici içinde zaman uyumsuz yöntemleri
async Main çağırmaya ilişkin ortak kodu Main üretir. anahtar sözcüğünü belirtmezseniz, aşağıdaki örnekte gösterildiği gibi bu kodu
async kendiniz yazmanız gerekir. Örnekteki kod, zaman uyumsuz işlem tamamlanana kadar program çalıştırmanızı sağlar:
PHP- Kodu
public static void Main()
{
AsyncConsoleWork().GetAwaiter().GetResult();
}
private static async Task<int> AsyncConsoleWork()
{
// Main body here
return 0;
}
Bu ortak kod şu şekilde değiştirilebilir:
PHP- Kodu
static async Task<int> Main(string[] args)
{
return await AsyncConsoleWork();
}
Derleyicinin her zaman Main doğru
async kodu oluşturması gibi bildirim oluşturmanın bir avantajıdır.
Uygulama giriş noktası bir veya döndür olduğunda, derleyici uygulama kodunda bildirilen giriş noktası yöntemini çağıran Task yeni bir giriş noktası
Task<int> üretir. Bu giriş noktasının adı olduğunu
$GeneratedMain varsayarak, derleyici bu giriş noktaları için aşağıdaki kodu üretir:
- static Task Main() ile eşdeğerini yayan derleyicinin sonuçları private static void $GeneratedMain() => Main().GetAwaiter().GetResult();
- static Task Main(string[]) ile eşdeğerini yayan derleyicinin sonuçları private static void $GeneratedMain(string[] args) => Main(args).GetAwaiter().GetResult();
- static Task<int> Main() ile eşdeğerini yayan derleyicinin sonuçları private static int $GeneratedMain() => Main().GetAwaiter().GetResult();
- static Task<int> Main(string[]) ile eşdeğerini yayan derleyicinin sonuçları private static int $GeneratedMain(string[] args) => Main(args).GetAwaiter().GetResult();
Not
Örneklerde
async yönteminde değiştirici
Main kullanılmışsa, derleyici aynı kodu üretir.
Komut Satırı Bağımsız Değişkenleri
yöntemini tanımlamak için aşağıdaki Main yöntemlerden birini kullanarak yöntemine bağımsız değişkenler gönderebilirsiniz:
Not
Ayrıca
Environment.CommandLine Environment.GetCommandLineArgs , komut satırı bağımsız değişkenlerine konsol veya
Windows Forms uygulamasındaki herhangi bir noktadan erişmek için de kullanabilirsiniz.
Windows Forms uygulamasındaki Yöntem imzasında komut satırı bağımsız değişkenlerini etkinleştirmek için
Main , imzasını el ile değiştirmeniz gerekir Main .
Windows Forms Tasarımcısı tarafından oluşturulan kod, Main giriş parametresi olmadan oluşturulur.
Yönteminin parametresi,
Main String komut satırı bağımsız değişkenlerini temsil eden bir dizidir. Genellikle, özelliği test ederek bağımsız değişkenlerin mevcut olup olmadığını belirlersiniz
Length .
Örneğin:
PHP- Kodu
if (args.Length == 0)
{
System.Console.WriteLine("Please enter a numeric argument.");
return 1;
}
İpucu
args Dizi
null olamaz. Bu nedenle,
Length özelliği
null denetimi olmadan erişmek güvenlidir.
Ayrıca, sınıfını veya yöntemini kullanarak dize bağımsız değişkenlerini sayısal türlere dönüştürebilirsiniz
Convert Parse .
Örneğin, aşağıdaki ifade,
string long yöntemini kullanarak öğesini bir sayıya dönüştürür
Parse :
PHP- Kodu
long num = Int64.Parse(args[0]);
C# türü de kullanılabilir
long , diğer ad
Int64 :
PHP- Kodu
long num = long.Parse(args[0]);
Convert ToInt64 Aynı şeyi yapmak için de sınıf yöntemini kullanabilirsiniz:
PHP- Kodu
long num = Convert.ToInt64(s);
Aşağıdaki örnek, bir konsol uygulamasında komut satırı bağımsız değişkenlerinin nasıl kullanılacağını gösterir. Uygulama çalışma zamanında bir bağımsız değişken alır, bağımsız değişkeni bir tamsayıya dönüştürür ve sayının faktöriyelini hesaplar. Bağımsız değişken sağlanmazsa, uygulama programın doğru kullanımını açıklayan bir ileti yayınlar.
Uygulamayı bir komut isteminden derlemek ve çalıştırmak için aşağıdaki adımları izleyin:
1. Aşağıdaki kodu herhangi bir metin düzenleyicisine yapıştırın ve sonra dosyayı çarpınımı.
cs adlı bir metin dosyası olarak kaydedin.
PHP- Kodu
using System;
public class Functions
{
public static long Factorial(int n)
{
// Test for invalid input.
if ((n < 0) || (n > 20))
{
return -1;
}
// Calculate the factorial iteratively rather than recursively.
long tempResult = 1;
for (int i = 1; i <= n; i++)
{
tempResult *= i;
}
return tempResult;
}
}
class MainClass
{
static int Main(string[] args)
{
// Test if input arguments were supplied.
if (args.Length == 0)
{
Console.WriteLine("Please enter a numeric argument.");
Console.WriteLine("Usage: Factorial <num>");
return 1;
}
// Try to convert the input arguments to numbers. This will throw
// an exception if the argument is not a number.
// num = int.Parse(args[0]);
int num;
bool test = int.TryParse(args[0], out num);
if (!test)
{
Console.WriteLine("Please enter a numeric argument.");
Console.WriteLine("Usage: Factorial <num>");
return 1;
}
// Calculate factorial.
long result = Functions.Factorial(num);
// Print result.
if (result == -1)
Console.WriteLine("Input must be >= 0 and <= 20.");
else
Console.WriteLine($"The Factorial of {num} is {result}.");
return 0;
}
}
// If 3 is entered on command line, the
// output reads: The factorial of 3 is 6.
2. Başlat ekranından veya Başlat menüsünden bir
Visual Studio Geliştirici komut istemi penceresi açın ve oluşturduğunuz dosyayı içeren klasöre gidin.
3. Uygulamayı derlemek için aşağıdaki komutu girin.
dotnet build
Uygulamanızda hiçbir derleme hatası yoksa,
Factorial.exe adlı yürütülebilir bir dosya oluşturulur.
4. 3 ' ün çarpımını hesaplamak için aşağıdaki komutu girin:
dotnet run -- 3
Komut bu çıktıyı üretir:
The factorial of 3 is 6.
Not
Visual Studio 'da bir uygulama çalıştırırken, hata ayıklama sayfasında, proje Tasarımcısı' nda komut satırı bağımsız değişkenlerini belirtebilirsiniz.