前往
大廳
主題

nameof運算式 (C# 6以上支援)

Yang | 2022-08-04 12:25:08 | 巴幣 0 | 人氣 225

推測編譯器背後是將nameof轉換成const string

之前寫的紀錄log的方法(程式簡易效能紀錄)改用nameof優化,減少魔術字串

//修改前
void LogTrace(string msg, in string uniqueName, in TimeSpan? elapsed = null, [CallerLineNumber] in int lineNumber = 0, [CallerMemberName] in string memberName = "")
{
    if (elapsed.HasValue)
    {
        msg = string.Format("ts={0}{1}{2}", elapsed.Value.ToString("ss'.'ffffff"), string.IsNullOrWhiteSpace(msg) ? string.Empty : "|", msg);
    }

    AppendLog(LogLevel.Trace, msg, lineNumber, $"{uniqueName}.{memberName}");
}

void LogException(in Exception ex, in string stackTrace, in TimeSpan? elapsed = null, [CallerLineNumber] in int lineNumber = 0, [CallerMemberName] in string memberName = "")
{
    string msg = string.Join("|", ex.Message, ex.GetType().Name, $"{Environment.NewLine}{stackTrace}");

    if (elapsed.HasValue)
    {
        msg = string.Format("ts={0}|{1}", elapsed.Value.ToString("ss'.'ffffff"), msg);
    }

    AppendLog(LogLevel.Error, msg, lineNumber, memberName);
}

//修改後
void LogTrace(string msg, in string uniqueName, in TimeSpan? elapsed = null, [CallerLineNumber] in int lineNumber = 0, [CallerMemberName] in string memberName = "")
{
    if (elapsed.HasValue)
    {
        const string format = nameof(elapsed) + "={0}{1}{2}";
        msg = string.Format(format, elapsed.Value.ToString("ss'.'ffffff"), string.IsNullOrWhiteSpace(msg) ? string.Empty : "|", msg);
    }

    AppendLog(LogLevel.Trace, msg, lineNumber, $"{uniqueName}.{memberName}");
}

void LogException(in Exception ex, in string stackTrace, in TimeSpan? elapsed = null, [CallerLineNumber] in int lineNumber = 0, [CallerMemberName] in string memberName = "")
{
    string msg = string.Join("|", ex.Message, ex.GetType().Name, $"{Environment.NewLine}{stackTrace}");

    if (elapsed.HasValue)
    {
        const string format = nameof(elapsed) + "={0}|{1}";
        msg = string.Format(format, elapsed.Value.ToString("ss'.'ffffff"), msg);
    }

    AppendLog(LogLevel.Error, msg, lineNumber, memberName);
}
送禮物贊助創作者 !
0
留言

創作回應

更多創作