我想知道其他C#开发人员是否认为,为csc.exe
添加编译器指令以使空格在代码块中具有类似Haskell或Python的重要性是否会有所改进。
虽然这显然是与C-style语言大相径庭,但我认为由于C#最终被编译成CIL(它仍将具有花括号和分号),因此这只是编译器可以处理的一种解析技巧(即它可以处理重要的空格或不处理)。由于花括号和分号通常是C#入门的障碍,而且它们只是解析助手(它们本身并不赋予代码含义),因此它们可以像Haskell/Python一样被删除。
F# 使用 #light 编译器指令来处理这个问题,你可以在 F# 1.1.12.3中的轻量级语法选项中了解它。
我希望在 C# 中也能看到这样的东西:一个 #SigSpace 或类似的指令,可以让 csc.exe
根据空格将源代码视为像 Haskell 文件那样进行处理(只是举个例子)。
标准的 C#:
public void WhiteSpaceSig()
{
List<string> names = new List<string>();
List<string> colors = new List<string>();
foreach (string name in names)
{
foreach (string color in colors)
{
// bla bla bla
}
}
}
显著的空白:
#SigSpace
public void WhiteSpaceSig()
List<string> names = new List<string>()
List<string> colors = new List<string>()
foreach (string name in names)
foreach (string color in colors)
// bla bla bla
我不是说我想用C#做这件事,但我很感兴趣了解其中的权衡。我猜大多数C#开发人员已经习惯了语法,以至于他们看不出它有多么不自然(尽管最终可能使代码更易于阅读)。