gpt4 book ai didi

c# - C# 中的条件编译技术以获得空操作结果

转载 作者:行者123 更新时间:2023-11-30 19:03:32 25 4
gpt4 key购买 nike

有谁知道在 C# 中用空操作替换某些函数调用的好方法(通过反射或特殊属性)?

基本上,我想做的是这样的

#ifdef DEBUG

StopWatch.start();

#endif

DoSomething();

#ifdef DEBUG

StopWatch.stop();
Log.TimingInfo(StopWatch);

#endif

无需在我的代码中随处散布大量 ifdef。我可以用空对象模式替换它(我的 StopWatch 类)并有条件地为其分配空对象,但与代码中严格的无操作相比,这仍然不理想。代码路径长度在这里非常重要,当我们不尝试收集时序结果时,我宁愿牺牲一些可读性来完全没有操作。

有谁知道是否有办法在 C# 中标记我的 StopWatch 类或方法,以便在编译器评估时不发出代码?

最佳答案

您可以使用 [Conditional("DEBUG")] 属性注释您的方法,例如:

class StopWatch
{
[Conditional("DEBUG")]
public void Start() { }

[Conditional("DEBUG")]
public void Stop() { }
}

这与调用 Start/Stop#ifdef DEBUG 具有相同的效果。一个警告:条件方法必须返回 void。还有一些其他限制。查看ConditonalAttribute有关详细信息的文档。

关于c# - C# 中的条件编译技术以获得空操作结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4168825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com