2012-03-08 25 views
24

muszę wpisać Console.WriteLine() wiele czasu w moim kodu .. więc ktoś może mi powiedzieć, aby utworzyć skrót do Console.WriteLine jak mogę go używać jakoJak utworzyć skrót do Console.WriteLine

CW=Console.WriteLine(); 
//After that i can use this CW for my Console.WriteLine() like 
CW("Print Something"); 

Odpowiedz

87

Program Visual Studio ma już domyślny fragment kodu. Po prostu wpisz cw i naciśnij kartę. Zwróć uwagę, że jeśli rozważasz użycie metody, może jej brakować niektórych funkcji, takich jak automatyczny ciąg.Format i inne przeciążone parametry.

+0

Ponadto, używając skrótu, musisz bardzo uważać na takie rzeczy, jak niedopasowanie między elementami formatu i elementami listy argumentów, które kompilator ostrzega, jeśli jawnie wywołasz 'Console.WriteLine'. Po prostu straciłem trochę czasu, ponieważ moja metoda 'ReportTermination' wykryła i napisała do informacji o błędzie konsoli. W metodzie użyłem stałego ciągu formatującego (komunikatu), więc właściwość, którą przekazywałem jako argument do ciągu formatu, była interpretowana jako ciąg formatu, pozostawiając listę argumentów krótką o jedną pozycję, podnosząc kolejną, tajemnicę, wyjątek. – ProfK

+0

Moje przeprosiny. Kompilator nie generuje ostrzeżenia; to ReSharper ostrzega. Każde standardowe wywołanie 'Console.WriteLine' z niezgodną listą argumentów spowoduje zgłoszenie wyjątku. Może warto sprawdzić skrót, który to sprawdza. – ProfK

+0

warte przejęcia! –

30

Jeśli jesteś na .NET 3.5 lub nowszy:

Action<string> cw = Console.WriteLine; 

cw("Print Something"); 
+0

To jest fantastyczne.Czy można dodać opis do tego skrótu, który będzie wyświetlany po najechaniu kursorem myszy? – Animesh

+0

+1 za spryt i bycie dokładnie takim, jakiego żądał pytający. Uważaj jednak na modyfikatory dostępu dla członków: istnieje możliwość niebezpiecznego/pozbawionego skrupułów/niejasnego programowania, gdy zaczyna się jeździć po tej drodze. – jwrush

+0

+1: To była moja druga odpowiedź, po zaakceptowaniu. Podoba mi się to, ale dodaje ryzyko. – ProfK

1

napisać metodę, która zwraca void i zadzwonić, gdy kiedykolwiek potrzebne do Console.WriteLine()

void Log(string msg) 
{ 
    Console.WriteLine(msg); 
} 
2
public static void CW(string str) 
{ 
    Console.WriteLine(str); 
} 
12

Można bez wątpienia utworzyć dla niego Visual Studio snippet (choć faktycznie jest już jeden dla cw, podobno - spróbuj!).

Ja osobiście sugerują, że ty nie użyć skrótu kodem - to może być wyraźniejszy każdemu czytania, jeśli wciąż mówi Console.WriteLine.

W zależności od tego, co to jest za, to może sensu napisać metodę pomocniczą o nazwie, powiedzmy, Log - który ma wystarczającą oznaczającego, natomiast CW nie.

(Jeśli to jest do logowania, należy rozważyć użycie czegoś mocniejszego, takich jak log4net, too.)

1

Można zadeklarować metody statyczne zawinąć połączenia:

static class C 
{ 
    static void W(string s) 
    { 
     Console.WriteLine(s); 
    } 
} 

następnie:

C.W("Print Something"); 

Byłbym skłonny użyć refaktoryzacji metodą "inline" przed sprawdzeniem kodu, który wywołuje s metoda. Jak zauważa Jon Skeet, nie jest tak mylące, aby bezpośrednio używać Console.WriteLine.

4

Jeśli chcesz to globalny, można napisać metodę rozszerzenia:

public static class StringExtensions 
{ 
    public static void ConLog(this string msg) 
    { 
    Console.WriteLine(msg); 
    } 
} 

Teraz gdziekolwiek jesteś możesz zadzwonić "My Message".ConLog(); na dowolny ciąg w aplikacji i zapisać go do konsoli.

+0

który nie działałby z intelli-sense konsoli Console.Writline –

1

Jeśli masz ReSharper można wpisać się i Wprowadź i wiersz

Console.Out.WriteLine(""); 

będą zapisywane.

W przypadku, gdy chcesz wstawić zmienną jest inny żywo szablon: outv.

Console.Out.WriteLine("time = {0}", time); 

Tutaj czas jest zmienną, która można wybrać po wpisaniu outv.

1

Jeśli piszesz to na górze strony

using j = System.Console;

następnie w dowolnym momencie można użyć

j.WriteLine("Anything you want to write");

An to wszystko. Przy okazji, możesz użyć czegokolwiek zamiast "j".

0

Skrót ten uniknie wyjątki wyrzucane podczas korzystania z kompozytu przeciążenie formatowania jak Console.WriteLine(String, Object[]) i liczbę elementów wielkoformatowych w format oraz liczbę pozycji na liście argumentów, args różnią:

public bool WriteToConsole(string format, params object[] args) 
{   
    var succeeded = false; 
    var argRegex = new Regex(@"\{\d+\}"); 
    if ((args != null) && (argRegex.Matches(format).Count == args.Length)) 
    { 
     Console.WriteLine(format, args); 
     succeeded = true; 
    } 
    else 
    { 
     Console.WriteLine(format); 
    } 
    return succeeded; 
} 
0
// For formatting string and parameters define a function 
// The shortcut function wl, kind of write line 
public void wl(string format, params object[] parms){ 
    Console.WriteLine(format, parms); 
} 

// Just for strings we can use Action delegate 
Action<string> ws = Console.WriteLine; 

// examples: 
ws("String with no formatting parameters"); 

wl("String without formatting parameters"); 
wl("String with {0} parameters {1}", 2, "included"); 
wl("several parameters {0} {1} {2} repeated {0}", 1234, 5678, 6543); 

lub stosując metodę rozszerzenia: formatString.wl (argumenty ...)

public static class ConsoleWriteExtensions 
{ 
    public static void wl(this string format, params object[] parms){ 
     Console.WriteLine(format, parms); 
    } 
} 

"{0} -> {1}".wl("Mili",123.45); // prints Mili -> 123.45 
4

C# 6 dodaje t on using static cecha:

using static System.Console; 

class Program { 
    void Main(string[] args) { 
    WriteLine("Hello, {0}!", "world"); 
    } 
} 

IntelliSense w Visual Studio 2015 rozumie tę nową składnię.

0

po prostu wpisz: cw i naciśnij przycisk tabulacji dwa razy. To rzeczywiście wizualny fragment kodu studyjnego do napisania konsoli Console.WriteLine(); szybko. Tak jak ty wpisujesz prop, by zadeklarować jakąś własność w klasie.

0

Jeden z moich ulubionych również ... Pochodzących z BASIC i Python ... Brakowało Print() bardzo często ... Używam również Print() szeroko w JS/ES dla console.log/other- konsole często ...

więc zadeklarować ją jako funkcję:

public static void Print(object x){ Console.WriteLine(x); } 
  • można komponować sznurki w swoim testamencie jako parametr funkcji, takich jak:
Print("Hi\n\n" + x.toString() + "\n\nBye!!!"); 
  • lub interpolować Vars woli
Print($"{x} ~ {y} ~ {z}"); 
Powiązane problemy