为什么默认情况下编译器指令从一行的开头开始?

时间:2016-03-15 10:32:02

标签: c# visual-studio-2013

默认情况下,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
    }

1 个答案:

答案 0 :(得分:1)

我认为,因为它在逻辑上是一个单独的预处理步骤(它遵循与C的预处理器类似的语义,这是一个独立的程序)。从某种意义上说,它不属于C#本身;它与实际语言功能正交。例如,预处理程序指令不必位于同一个块中,因此它们可用于将两个函数组合为一个,等等。

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