2008-09-17 18 views
18

Aşağıda, komut satırı parametrelerinde iki okuma yolu vardır. Birincisi, ana parametreyi kullanarak görmeye alışık olduğum yoldur. Kod gözden geçirirken ikinci tökezledi. Ikincisi dizideki ilk öğeyi yola ve uygulamaya atar, ancak ilk bunu atlar.Konsol uygulamasında komut satırı parametrelerini okumak için en iyi yol

Sadece tercih mi, yoksa ikinci yol şimdi mi daha iyi? mutlaka bir vb.net soru değil bu yüzden

Sub Main() 
    Dim args() As String = System.Environment.GetCommandLineArgs() 

    For i As Integer = 0 To args.Length - 1 
     Console.WriteLine("Arg: " & i & " is " & args(i)) 
    Next 

    Console.ReadKey() 
End Sub 



Sub Main(ByVal args() As String) 
    For i As Integer = 0 To args.Length - 1 
     Console.WriteLine("Arg: " & i & " is " & args(i)) 
    Next 

    Console.ReadKey() 
End Sub 

Ben, C# yapılabilir aynı düşünüyorum.

cevap

20

İkinci yol daha iyidir çünkü ana() dışında kullanılabilir, bu yüzden tekrar gözden geçirdiğinizde bunun düşünülmesi gereken daha az şey vardır.

Ayrıca, ilk yöntem için yöntem parametresindeki satırları koyan "sihirbazdan" hoşlanmıyorum.

+1

+ 1 İlke –

+1

, evet ana() yöntemi dışında da kullanılabilir. Fakat sınıfı oluşturup çağırmak istediğinizde ne olur? Komut satırıyla çağırmanız veya parametrelerinizin yok sayılması gerekir, değil mi? Birden fazla imzaya sahip olmak daha iyi olmaz; olmayan kişi onları System.CommandLine'dan ayıklayıp diğerine geçecek? –

+0

Michael, elbette, bu yönteme bir "Çekirdek" montajında, yalnızca konsol projesinde arama yapmam. Ayarlar sınıfının veya eşdeğerinin bir benzeri olması, argümanları uygulamanın geri kalanında kullanılabilecek şekilde ayrıştırmaya özen göstermekteydim. –

2

İlk yol daha iyidir çünkü daha basittir.

1

Bana göre ilk bakışta daha sezgisel görünüyor çünkü C/C++ günlerimden beri bunu yapıyordum.

Komut dizinizde çok fazla anahtar varsa, lütfen Thomas'ın önerdiği getopt'a bakın. Oldukça kullanışlı. Yine de C# portuna bakmadım.

Selamlar, tek Sorumluluk

kgr

İlgili konular