2009-07-19 44 views
19

Thực ra câu hỏi cần được tại sao Console.WriteLine tồn tại chỉ để được một wrapper cho Console.Out.WriteLineTại sao Console.Out.WriteLine tồn tại?

tôi thấy phương pháp này ít sử dụng IntelliSense, sau đó mở .NET reflector và 'decompiled' mã cho phương pháp Console.WriteLine và thấy điều này:

public static void WriteLine(string value) 
{ 
    Out.WriteLine(value); 
} 

Vậy tại sao WriteLine được triển khai theo cách này? Nó hoàn toàn chỉ là một phím tắt hoặc có lý do khác không?

Trả lời

44

Console.WriteLine là phương pháp tĩnh. Console.Out là một đối tượng tĩnh có thể được truyền dưới dạng tham số cho bất kỳ phương thức nào có số TextWriter và phương thức đó có thể gọi phương thức thành viên không tĩnh WriteLine.

Một ví dụ nơi này sẽ có ích là một số loại thói quen khai thác gỗ tùy biến, nơi bạn có thể muốn gửi đầu ra để stdout (Console.Out), stderr (Console.Error) hoặc nơi nào (System.IO.TextWriter.Null), hoặc bất cứ điều gì khác dựa trên một số thời gian chạy điều kiện.

4

Brad Abrams (Thành viên sáng lập của cả CLR và .NET framework tại Microsoft) nói như sau.

Console.WriteLine() chỉ đơn giản là phím tắt cho Console.Out.WriteLine. Bàn điều khiển đã bị quá tải bởi tính thích hợp của WriteLine để dễ dàng hơn để viết.

Nguồn: Sách "Ngôn ngữ lập trình C# của Anders Hejlsberg".

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