2012-06-14 15 views
5

Ben static void Main(string[] args) ile doğal olarak girilir birkaç konsol uygulaması bakım miras ediyorum. Ancak, kod args dizisini yok sayar ve bunun yerine System.Environment.CommandLine komut satırı parametrelerini okur.(string [] args) ve System.Environment.CommandLine arasındaki fark nedir?

fonksiyonel bir fark burada var mı?

içeriği aynı görünüyor. Bir şey varsa, bir dakika performans-hit System.Environment.CommandLine çağırarak şüpheli olurdu (ama ben endişe ya da ölçmek için yeterli olacak kadar yeterli değil).


GÜNCELLEME: Ben System.Environment.CommandLine yürütülebilir yolunu içermelidir şüpheli, ama bunu görmüyordu ... Ben yanlış yerde arıyordu çünkü. Kod AYRICA diğer tüm parametreler GetCommandLineArgs() ayıklanır ve ben devam ederken Zihinsel ikisini conflating iken string[] arrCmdLine = System.Environment.GetCommandLineArgs(); .... System.Environment.CommandLine.ToLower() "debug" varlığı için kontrol edilir sahiptir "neden olmasın sadece args[] kullanılır?"

yıldır bunu boyunca tüm edildiğinde, komut satırı args ayrıştırma en iyi yolu agonized ettik "doğru sırayla koyun!" [Jk]

cevap

7

System.Environment.CommandLine bir dizge olarak yürütülebilir ve bağımsız değişkenler içerir.

// Sample for the Environment.CommandLine property. 
using System; 

class Sample 
{ 
    public static void Main() 
    { 
    Console.WriteLine(); 
// Invoke this sample with an arbitrary set of command line arguments. 
    Console.WriteLine("CommandLine: {0}", Environment.CommandLine); 
    } 
} 
/* 
This example produces the following results: 

C:\>env0 ARBITRARY TEXT 

CommandLine: env0 ARBITRARY TEXT 
*/ 

http://msdn.microsoft.com/en-us/library/system.environment.commandline.aspx

args parametre

bağımsız değişken bir dizidir. Yani bağımsız argümanları System.Environment.CommandLine'dan ayrıştırabiliyorken, neden istediğinizi bilmiyorum. Görebilmemin tek nedeni, Main() dışındaki argümanlara erişmeniz gerekirse, bu muhtemelen kötü bir fikirdir. Main() yönteminiz argümanları işlemeli ve gerektiğinde uygulamanın geri kalanında geçirmelidir.

İlgili konular