我知道您可以#if DEBUG
在 C# 中使用和类似的东西,但是是否可以创建一个完全被忽略的方法或类,包括未包装在#if DEBUG
块内的所有用法?
就像是:
[DebugOnlyAttribute]
public void PushDebugInfo()
{
// do something
Console.WriteLine("world");
}
接着:
void Main()
{
Console.WriteLine("hello ");
Xxx.PushDebugInfo();
}
其中,如果DEBUG
定义将打印“hello world”,否则将打印“hello”。但更重要的是,MSIL 根本不应该在发布版本中包含方法调用。
我相信我所追求的行为类似于 Debug.WriteLine,它的调用被完全删除,并且对发布版本中的性能或堆栈深度没有影响。
并且,如果可能在 C# 中,任何使用此方法的 .NET 语言的行为是否相同(即,编译时与运行时优化)。
还标记了 f#,因为基本上我在那里需要这个方法。