Altbilgi içeriğine atla
Iron Academy Logo
C# Uygulaması
C# Uygulaması

Diğer Kategoriler

10 Dakikada veya Daha Kısa Sürede C# Uygulamalarında Komut Satırı Argümanları

[[academy-video-youtube({"vid": "Vxy9pssyCWI", "start_time": "0", "title": "C# Uygulamalarında Komut Satırı Argümanları - 10 Dakika veya Daha Kısa Sürede", "creator": "Tim Corey", "length": "8m 46s"})]]

Modern C# uygulamaları geliştirirken, geliştiricilerin genellikle programların nasıl başladığı ve davrandığı konusunda esneklik ihtiyacı olur. Her seçeneği sabitlemek yerine, kullanıcıların uygulamayı başlatırken komut satırı argümanları geçmesine izin vererek uygulamanızı dinamik hale getirebilirsiniz. Bu, geliştiricilere ve kullanıcılara komut satırı aracılığıyla doğrudan giriş parametreleri sağlamayı, kodu değiştirmeden uygulamanın nasıl çalıştığını ayarlamalarını sağlar.

Tim Corey, "Command Line Arguments in C# Applications in 10 Minutes or Less" başlıklı kısaca 10 dakikalık öğreticisinde, komut satırı argümanlarının nasıl etkinleştirileceğini ve bunların hem konsol hem de Windows Forms uygulamalarında etkin bir şekilde nasıl ele alınacağını açıkça gösterir. Bu makale, Tim tarafından açıklandığı gibi kavramları adım adım ele alır.

Komut Satırı Argümanları Nedir?

Başlangıçta, Tim komut satırı argümanlarının neden önemli olduğunu açıklar. Onları, Docker gibi araçları başlatırken görüntü yüklemek veya görev yürütmek gibi komutları belirttiğimiz duruma benzetir. Benzer şekilde, C# komut satırı uygulamalarında, çalışırken programın davranışını tanımlayan parametreler geçirebilirsiniz.

Örneğin, dosyaları işlemek için bir konsol uygulaması çalıştırıyorsanız, dosya yolunu veya modunu komut satırı girişiyle belirtmek isteyebilirsiniz - kodu değiştirmek yerine.

Konsol Projesini Kurma

Tim, Visual Studio içinde bir temel .NET 8 Konsol Uygulaması projesiyle başlar. Varsayılan kod yalnızca "Çıkmak için enter tuşuna basın" gibi bir mesaj basar ve kapatmadan önce kullanıcıdan girdi beklemek için bir Console.ReadLine() ifadesi kullanır.

Şimdi, komut satırı girişini ele almak için, Tim uygulama çalıştırıldığında iletilen argümanları depolayan args dizisini tanıtır. Modern C# konsol uygulamaları üst düzey ifadeleri kullanmasına rağmen, perde arkasında, yine de şu şekilde tanımlanan bir giriş noktası vardır:

static void Main(string[] args)
static void Main(string[] args)

ya da bazen:

static int Main(string[] args)
static int Main(string[] args)

Bu imzalar, işlemin başlangıçta başladığı ana yöntemi temsil eder. args parametresi, komut satırından sağlanan tüm argümanları içeren bir dizi karakter dizisidir (string[]).

Tim, args dizisi üzerinde bir foreach döngüsü kullanarak nasıl yineleme yapıldığını gösterir:

foreach (var arg in args)
{
    Console.WriteLine(arg);
}
foreach (var arg in args)
{
    Console.WriteLine(arg);
}

Burada, var arg args dizisindeki her bir dizge argümanı temsil eder ve program bunları konsol çıktısında ayrı satırlara yerleştirir.

Tim, üst düzey ifadelerin Program sınıfı ve Main yöntemi gibi kalıp kodları saklasa da, her şeyin aynı şekilde çalıştığını not eder - args dizisi her zaman mevcuttur ve komut satırı argümanlarını yakalamaya hazırdır.

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

Bir sonraki adımda, Tim bu özelliğin nasıl test edileceğini gösterir. Visual Studio içinde programı normalde çalıştırdığında, farklı bir şey göstermez çünkü komut satırı girişi sağlanmamıştır.

Düzgün bir şekilde test etmek için, Tim çalışma sürecini el ile değiştirir: Dosya Gezgini'ni açar, projenin bin → Debug → net8.0 klasörüne gider ve o yoldan bir terminal penceresi başlatır.

Oradan şu komutu kullanır:

ConsoleArgs.exe "hello world" -t timing
ConsoleArgs.exe "hello world" -t timing

Bu komut birkaç ana noktayı gösterir:

  • Tırnak içindeki "merhaba dünya" bir dizi argümanı olarak, iki ayrı kelime olarak değil, tek bir dize argümanı olarak kabul edilir.

  • -t bayrağı ve zamanlama kelimesi iki ek argüman olarak kabul edilir.

Çalıştırıldığında, konsol çıktısı şu şekilde gösterir:

hello world  
-t  
timing
hello world  
-t  
timing

Her bir satır argümanı args dizisinde bir elementi temsil eder. Tim, bunun komut satırı argümanlarının doğru kullanımını doğruladığını açıklar - konsol uygulaması, çalıştırma sırasında iletilen tüm argümanları başarıyla almış ve görüntülemiştir.

Geliştiricilerin, .NET run kullanarak yerine projeleri bir dizinden çalıştırırken yürütülebilir yola kullanabileceklerini belirtiyor:

dotnet run -- "hello world" -t timing
dotnet run -- "hello world" -t timing

Çift tire (--) .NET'e programınız için komut satırı parametreleri olarak her şeyi işlemesini, .NET CLI kendi için değil, söyler.

Komut Satırı Argümanlarını Ele Alma ve Ayrıştırma

Artık argümanları okuyabildiğimize göre, Tim komut satırı argümanlarını akıllıca ele almayı tartışıyor.

Örneğin, -t bir değer bekleyen bir bayraksa, program bir sonraki dizge argümanını onun değeri olarak ele almayı bilmelidir. Tim, args dizisindeki indeksleri kontrol ederek bunu manuel olarak nasıl ayrıştırabileceğinizi gösteriyor:

for (int i = 0; i < args.Length; i++)
{
    if (args[i] == "-t")
    {
        var value = args[i + 1];
        Console.WriteLine($"Timing parameter: {value}");
    }
}
for (int i = 0; i < args.Length; i++)
{
    if (args[i] == "-t")
    {
        var value = args[i + 1];
        Console.WriteLine($"Timing parameter: {value}");
    }
}

Bu yaklaşım, adlandırılmış argümanları, sayısal türleri ve hatta ayrıntılı mod bayraklarını ele almanızı sağlar. Tim, geliştiricilerin genellikle daha gelişmiş argüman ayrıştırma için bir switch ifadesi veya hatta dış dokümantasyon ve kütüphaneler kullandığını, ancak System ad alanı ve args dizisinin temel durumlar için gerekli olan her şeyi zaten sağladığını belirtiyor.

Bir Windows Forms Uygulamasına Genişletme

Konsol uygulamalarını gösterdikten sonra, Tim bir Windows Forms uygulamasına (WinForms) geçer.

Oluşturulan kodda, Program.cs dosyası bir static void Main() yöntemi içerir, ancak henüz parametre kabul etmez. Komut satırı argümanlarını etkinleştirmek için, Tim Main yöntemini args parametresini içerecek şekilde elle değiştirir:

[STAThread]
static void Main(string[] args)
{
    ApplicationConfiguration.Initialize();
    Application.Run(new Form1(args.FirstOrDefault() ?? "default"));
}
[STAThread]
static void Main(string[] args)
{
    ApplicationConfiguration.Initialize();
    Application.Run(new Form1(args.FirstOrDefault() ?? "default"));
}

Args.FirstOrDefault() ifadesinin args dizisinden ilk giriş parametresini aldığını (ya da argüman sağlanmadığında "varsayılan" döndürdüğünü) açıklar.

Daha sonra, Tim Form1 sınıfında kurucuyu bir dizgi argümanını kabul edecek şekilde günceller:

public Form1(string name)
{
    InitializeComponent();
    displayName.Text = name;
}
public Form1(string name)
{
    InitializeComponent();
    displayName.Text = name;
}

Burada, displayName Windows Forms Designer'da tanımlanan bir etikettir ve şimdi komut satırı yoluyla iletilen argümanı görüntüler.

Programı argümanlar olmadan çalıştırdığında, etiket "varsayılan" görüntüler. Tekrar çalıştırdığında ise:

WinFormsArgs.exe "Hello World"
WinFormsArgs.exe "Hello World"

form penceresi "Merhaba Dünya" yazısını görüntüler.

Tim, bu tekniğin Windows Forms uygulamalarının komut satırı argümanlarını tıpkı konsol uygulamaları gibi desteklemesine olanak tanıdığını, böylece kullanıcıların başlangıç davranışlarını dinamik olarak değiştirme yeteneği verdiğini açıklar.

Komut Satırı Argümanlarının Pratik Kullanımları (7:18)

Tim, bu özellik ile birlikte komut satırı araçlarının nasıl çok yönlü hale gelebileceğini tartışarak sonuca varır. Geliştiriciler, komut satırı argümanlarını şu amaçlarla kullanabilir:

  • Uygulamaları farklı modlarda başlatın (örneğin, koyu mod veya açık mod).

  • Başlangıçta dosya yolları veya yapılandırma seçenekleri sağlayın.

  • Basit anahtarlar (-v veya --debug) kullanarak ayrıntılı mod veya hata ayıklama özelliklerini etkinleştirin.

  • Farklı iş akışları için spesifik argümanlar ileten kısayollar oluşturun.

Ana yöntemi dizgi argümanlarını kabul edecek şekilde tasarlayarak, uygulamanızın esnekliğini ve uyarlanabilirliğini kolayca genişletebiliriz - ek kullanıcı girdi diyalogları veya yapılandırma dosyalarına ihtiyaç duymadan.

Sonuç (8:15)

Onun örnek tabanlı açıklaması, C#'ta komut satırı argümanlarını ele almanın karmaşık olmadığını gösteriyor - bu, yalnızca her uygulamanın bir giriş noktasının (Main) olduğunu ve burada komut satırından iletilen argümanların bir dizgi dizisi olarak geldiğini anlamak meselesi.

Konsol uygulamalarıyla veya Windows Forms uygulamalarıyla çalışırken, bu kavram, programlarınızı başlangıçta belirtilen komutlara, değerlere ve parametrelere dinamik olarak yanıt verme yeteneği kazandırır.

Son Çıkarım

Tim Corey'nin videosu, C#'ta komut satırı argümanlarının doğru kullanımına yönelik net ve pratik bir kılavuz sunar. Args parametresinin Main yönteminde nasıl çalıştığını anlayarak, geliştiriciler daha sağlam ve yapılandırılabilir uygulamalar için argümanlar oluşturabilir, ayrıştırabilir ve bu argümanları kullanabilir.

Bu yüzden bir dahaki sefere bir C# projesi oluşturduğunuzda, komut satırı argümanlarınızın sadece teknik bir sözdizimi olmadığını hatırlayın - bunlar programınız ve kullanıcıları arasındaki köprüdür, kodunuza daha fazla güç, esneklik ve gerçek dünya kullanılabilirliği sağlar.

Hero Worlddot related to 10 Dakikada veya Daha Kısa Sürede C# Uygulamalarında Komut Satırı Argümanları
Hero Affiliate related to 10 Dakikada veya Daha Kısa Sürede C# Uygulamalarında Komut Satırı Argümanları

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js ile çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara