0
private static void print(StreamWriter sw, string mlog, bool screen)
    {
        DateTime ts = DateTime.Now;
        sw.WriteLine(ts + " " + mlog);
        if (screen == true)
        {
            Console.WriteLine(mlog);
        }
    }

私はよくprint (sw,"write here", false)電話していました。90% の確率で false を使用します。呼び出しを行うときに余分な型を実行する必要がないように、デフォルトを false にする方法は?

4

7 に答える 7

7

C# 4 を使用している場合はscreenオプションのパラメーターを作成できます。

// Note: changed method and parameter names to be nicer
private static void Print(StreamWriter writer, string log, bool screen = false)
{
    // Note: logs should almost always use UTC rather than the system local
    // time zone
    DateTime now = DateTime.UtcNow;

    // TODO: Determine what format you want to write your timestamps in.
    sw.WriteLine(CultureInfo.InvariantCulture,
                 "{0:yyyy-MM-dd'T'HH:mm:ss.fff}: {1}", now, log);
    if (screen)
    {
        Console.WriteLine(mlog);
    }
}
于 2012-07-02T19:00:32.827 に答える
1
private static void print(StreamWriter sw, string mlog = "Write here", bool screen = false)
    {
        DateTime ts = DateTime.Now;
        sw.WriteLine(ts + " " + mlog);
        if (screen == true)
        {
            Console.WriteLine(mlog);
        }
    }
于 2012-07-02T20:07:25.757 に答える
1

使用するだけ= falseです:

private static void print(StreamWriter sw, string mlog, bool screen = false)

C# の名前付き引数と省略可能な引数についてもう少し詳しく説明します。

これは C# 4.0 の新機能であることに注意してください。古いバージョンでは、他の人が提案したようにメソッドのオーバーロードを使用してください。

于 2012-07-02T19:00:30.720 に答える
1

古いバージョンでは、単純に 2 つのオーバーライドを提供できます。

private static void print(StreamWriter sw, string mlog)
{ 
 print(sw,mlog, false);
}
于 2012-07-02T19:02:32.823 に答える
1

C# 4 を使用していない場合は、関数のオーバーロードを作成します。

private static void Print(StreamWriter writer, string log) 
{ 
    Print(writer, log, false);
} 
于 2012-07-02T19:03:03.493 に答える
1
private static void print(StreamWriter sw, string mlog)
{
    print(sw, mlog, false);
}
于 2012-07-02T19:01:43.853 に答える
1

オプションのパラメーターを含む回答は機能しますが、一部の言語はオプションのパラメーターをサポートしていないため、公開 API からこのメソッドを呼び出すことができませんでした。

メソッドのオーバーロードを使用します..

private static void print(StreamWriter sw, string mlog) {
    print(sw, mlog, false);
}

private static void print(StreamWriter sw, string mlog, bool screen) { ... }

于 2012-07-02T19:04:46.537 に答える