简单问题:
在VS20XX的发行版中是否完全没有完成字符串A和B的连接?
string A = // Dynamic string
string B = // Another Dynamic string
DoNothing(A+B);
...
void DoNothing(string MyString)
{
#ifdef DEBUG
// actual code here using MyString
#endif
}
如果不清楚,我正在尝试创建一些调试探针,但我不希望消息的连接影响最终版本的性能...
答案 0 :(得分:0)
您可以使用System.Diagnostics.ConditionalAttribute
:
[System.Diagnostics.Conditional( "Debug" )]
void DoNothing( string myString )
{
// The #if DEBUG is no longer required in here
}
这实际上可以保证不会评估呼叫站点的参数。
然而,如果从单独的程序集中调用DoNothing
(您的示例不使用访问修饰符,因此它不清楚预期的可见性是什么),行为DoNothing
取决于调用者中定义的符号,而不是编译DoNothing
时定义的符号。如果该方法最终是私有的或内部的,这并不重要。