2012-06-14 50 views
5

Tôi đang kế thừa bảo trì trên một số ứng dụng bảng điều khiển được nhập, tự nhiên, với static void Main(string[] args). Tuy nhiên, mã bỏ qua mảng args và thay vào đó đọc các tham số dòng lệnh từ System.Environment.CommandLine.Sự khác biệt giữa (string [] args) và System.Environment.CommandLine là gì?

Có sự khác biệt về chức năng không?

Nội dung trông giống hệt nhau. Nếu có bất cứ điều gì, tôi sẽ nghi ngờ một hit hiệu suất phút bằng cách gọi System.Environment.CommandLine (nhưng không đủ rằng tôi sẽ bao giờ quan tâm hoặc quan tâm đủ để đo lường).


UPDATE: Tôi nghi ngờ rằng System.Environment.CommandLine phải chứa đường dẫn thực thi, nhưng tôi đã không nhìn thấy nó ... bởi vì tôi đang tìm kiếm tại địa điểm sai. Mã ALSO có string[] arrCmdLine = System.Environment.GetCommandLineArgs(); .... System.Environment.CommandLine.ToLower() được kiểm tra sự hiện diện của "gỡ rối" trong khi tất cả các tham số khác được trích xuất từ ​​GetCommandLineArgs() và tôi đã tâm thần làm xáo trộn hai khi tôi đang đi "tại sao không chỉ sử dụng args[]?"

Trong nhiều năm, tôi đã khổ sở theo cách tốt nhất để phân tích cú pháp dòng lệnh args, khi tất cả cùng là "đặt chúng theo đúng thứ tự!" [jk]

Trả lời

7

System.Environment.CommandLine bao gồm tệp thi hành và đối số dưới dạng một chuỗi.

// 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

Tham số args là một mảng các đối số. Vì vậy, trong khi bạn có thể phân tích các đối số riêng lẻ từ System.Environment.CommandLine, tôi không chắc chắn lý do bạn muốn. Lý do duy nhất tôi có thể thấy là nếu bạn cần truy cập các đối số bên ngoài Main(), đó có thể là một ý tưởng tồi. Phương thức Main() của bạn nên xử lý các đối số và chuyển chúng xung quanh phần còn lại của ứng dụng nếu cần.

Các vấn đề liên quan