使用参数

时间:2018-02-01 07:57:23

标签: c# .net

我正在使用.NET C#(特别是Xamarin.Forms)。我不太了解编译器/运行时如何在幕后使用ConditionalAttribute

如果我有定义System.Diagnostics.ConditionalAttribute的方法。像这样:

[System.Diagnostics.Conditional("DEBUG")]
public void LogDebug(string tag, string message, params object[] args)
{
  DoSomeThing(tag, message);
  SomeLogLibrary.Log($"[{tag}] {message}", args);
}

我用

来称呼它
LogDebug("Log data={0}", Newtonsoft.Json.JsonConvert.SerializeObject(somedata));

问题是:SerializeObjectDEBUG未定义时调用了吗?

重要的是SerializeObject或其他一些方法是否仅仅为了记录而打印出来(我认为序列化对象是一项艰苦的工作)。除非我正在调试,否则我不希望它工作。

谢谢。

1 个答案:

答案 0 :(得分:6)

简而言之,整个方法调用将被删除。

另请参阅Microsoft Docs(link)上的说明:

  

如果定义了符号,则包含呼叫;否则,电话   (包括评估接收者和呼叫参数)是   删去。