默认情况下,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
}
答案 0 :(得分:1)
我认为,因为它在逻辑上是一个单独的预处理步骤(它遵循与C的预处理器类似的语义,这是一个独立的程序)。从某种意义上说,它不属于C#本身;它与实际语言功能正交。例如,预处理程序指令不必位于同一个块中,因此它们可用于将两个函数组合为一个,等等。
因为它们是破坏正常源代码流的粗略工具,所以它们位于第1列,以使它们脱颖而出。这可能并非一劳永逸 - 如果它们用于在函数内的几行代码的两个变体之间进行选择,则它们在运行时条件的意义上更多地使用,但没有运行时成本。在这种情况下,将它与块缩进对齐是有意义的。