代码之家  ›  专栏  ›  技术社区  ›  Tim

条件属性的编译

  •  0
  • Tim  · 技术社区  · 5 年前

    我一直在阅读条件属性,对于编译时会发生什么,我仍然有点困惑。假设我有以下代码:

    [System.Diagnostics.Conditional("FLAG")]
    private void DoSomething(string myString)
    {
        //  Do Something
    }
    
    public void Foo()
    {
        DoSomething("With this.");
    }
    

    假设 FLAG 未定义。编译时,将 DoSomething 方法是程序集的一部分,还是不存在?如果它确实存在,是否会调用 剂量测定 被注释掉(或从程序集中移除),或者它将调用 剂量测定 方法并看到它是有条件的,并且条件还没有满足,所以立即返回?

    显然,跳到方法并不运行返回将比从不调用它花费更多的周期。在大多数情况下,这不是问题,但似乎仍然是值得知道的事情。

    1 回复  |  直到 5 年前
        1
  •  1
  •   BartoszKP JuanBoca    5 年前

    the documentation

    ConditionalAttribute 除非与 如果将此属性应用于不返回void的方法,则在Visual Studio中会出现编译错误。

    也: