【问题标题】:Why do compiler-directives by default start on the beginning of a line?为什么编译器指令默认从行首开始?
【发布时间】:2016-06-30 17:46:43
【问题描述】:

默认情况下,VS 将编译器指令放在行首:

    public ServiceStatus IsServiceAvailable(string author, string reader, string deliveryWay)
    {          
#if(DEBUG)
        return ServiceStatus.Available;
#else
        return m_channel.IsServiceAvailableForReceiver(author, reader, deliveryWay);
#endif
    }

默认情况下它不是这样对齐的原因吗?

    public ServiceStatus IsServiceAvailable(string author, string reader, string deliveryWay)
    {          
        #if(DEBUG)
             return ServiceStatus.Available;
        #else
             return m_channel.IsServiceAvailableForReceiver(author, reader, deliveryWay);
        #endif
    }

【问题讨论】:

标签: c# visual-studio-2013


【解决方案1】:

我认为是因为它在逻辑上是一个单独的预处理步骤(它遵循与 C 的预处理器相似的语义,它是一个独立的程序)。从某种意义上说,它不是 C# 的一部分。它与实际的语言特征正交。例如,预处理器指令不必在同一个块中,因此它们可以用于将两个函数合二为一,等等。

因为它们是破坏正常源代码流的粗略工具,所以它们位于第 1 列以使它们脱颖而出。这可能不是万能的——如果它们用于在函数内的几行代码的两种变体之间进行选择,则它们更多地用于运行时条件,但没有运行时成本。在这种情况下,将其与块缩进对齐是有意义的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 2018-06-09
    • 2010-10-22
    相关资源
    最近更新 更多