2009-07-19 6 views
19

In realtà la questione dovrebbe essere Perché Console.WriteLine esistono solo per essere un wrapper per Console.Out.WriteLinePerché esiste Console.Out.WriteLine?

Ho trovato questo piccolo metodo che utilizza IntelliSense, poi aprì .NET reflector e 'decompilato' il codice per il metodo Console.WriteLine e trovato questo:

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

Quindi perché WriteLine implementato in questo modo? È totalmente solo una scorciatoia o c'è un'altra ragione?

risposta

44

Console.WriteLine è un metodo statico. Console.Out è un oggetto statico che può essere passato come parametro a qualsiasi metodo che prende uno TextWriter e che il metodo potrebbe chiamare il metodo membro non statico WriteLine.

Un esempio in cui questo sarebbe utile è una sorta di routine di registrazione personalizzabili, in cui si potrebbe desiderare di inviare l'output a stdout (Console.Out), stderr (Console.Error) o nulla (System.IO.TextWriter.Null), o qualsiasi altra cosa sulla base di alcuni runtime condizione.

4

Brad Abrams (Il membro fondatore di entrambi i framework CLR e .NET di Microsoft) afferma quanto segue.

Console.WriteLine() è semplicemente una scorciatoia per Console.Out.WriteLine. La console è stata sovraccaricata da WriteLine propery per semplificare notevolmente la scrittura di.

Fonte: libro "Il linguaggio di programmazione C# di Anders Hejlsberg".

Problemi correlati