在C#中隐藏花括号

8
在重新使用Python后,我开始注意到并对我的C#编码风格感到愤怒,因为它需要在所有地方添加大括号。
 if (...)
 {
     return ...;
 }
 else
 {
     return ...;
 }

更喜欢(主观上)看起来更干净的 Python 对应部分

if ...:
    return ...
else
    return ...

有没有办法可以隐藏这些大括号(它们占据了我的编码屏幕大约30%的空间,而且看起来很丑)?


6
省略它们即可。对于单个语句,在C#中不需要它们。 - Rauhotz
2
我认为这是使用C#的不幸后果。你可以尝试同行花括号,看起来更好,但这不是C#的社区标准 :( - ide
1
一种可能性是将编辑器设置为给 { } 设置非常明亮的颜色(如果您使用深色背景,则为暗色)。 - sinelaw
2
只要小心点 - https://dev59.com/SHRC5IYBdhLWcg3wROpQ - ide
那又怎么能减少他们占据编码屏幕的30%呢?他们仍然会占据屏幕的30%并且是一个眼中钉。事实上,30%的大屏幕会更加刺眼!我应该给你的评论点个踩,呵呵。 - Joe
显示剩余3条评论
10个回答

10

抱歉,如果你在使用C#进行编码并需要处理更复杂的单表达式块,那么你必须要接受这种情况。Python采用的“缩进表示代码块”语法可能很好,但那只是Python,不是C#。


5
你可以切换到:
 if (...) {
     return ...;
 } else {
     return ...;
 }

为了获得更多的屏幕空间。

我认为假装C#像Python一样工作是一个坏主意。


遗憾的是,屏幕空间只是问题的一半,如果我能完全隐藏它们,那看起来会更好。实际上,我将左大括号放在同一行以提高可读性。 - Joe
@Joe,我认为“它看起来更好”不足以做出这样的决定。如果你将经常使用C#,最好还是要熟悉其语法。 - Skilldrick
相信我,我已经习惯了语法,但是当我在周末使用Python开发我的个人项目时,我有一种“哇”的感觉。今天早上来上班时,我不禁注意到我多年来写的所有大括号...并且想着如果我能隐藏它,那不是很酷吗? - Joe

2
if (condition) {
    statement1
    statement2; }
else {
    statement3;
    statemen4; }

在我看来,这个东西相当丑陋 :(


2
呃……那太糟糕了……嘿嘿 - Joe
如果在Visual Studio中可以选择与编辑器背景颜色相同的括号前景色,那将是一个绝妙的想法。 - David von Tamar

1
如果你感觉非常邪恶:
if (iAmEvil)                                                                                                             {
    LookMa();
    NoBraces();
    OrSemiColonsForThatMatter()                                                                                         ;}
else {
    IfYouDontGetIt();
    ScrollRight();
}

当然,这可能比它的价值更麻烦。


我在想这是怎么可能的,将其复制粘贴到LinqPad中并看到了“隐藏”的文本。不确定这是否适合作为答案,有点想要从噪音角度进行投票否决。 - Joe
那听起来比预期的要严厉,不过很有趣 :) 没有点踩...但仍然不确定它是否应该算作答案... O_O - Joe
好的,http://stackoverflow.com/help/privileges/vote-down 上说,downvotes 是用于“一个极其草率、没有付出努力的帖子,或者是一个明显且可能危险错误的答案”。我的“解决方案”确实完成了任务(隐藏大括号和分号),而且我花了不少精力写出所有这些空格。按照这些标准,我相信我已经给出了一个完全有效的答案。如果你想要 downvote,那就去吧——幽默的效果是值得的 :) - YellPika

1
如果你需要使用.NET框架,但喜欢Python语法,那么你可能会喜欢查看Boo

+1 我已经阅读了,虽然 Boo 可能不能满足我隐藏花括号的简单需求,但它可能最终满足我在 .net 中像 Python 一样编写代码的愿望...但这不是 IronPython 所做的吗?..谷歌一下...显然那里也有一些区别。 - Joe

0
  1. 如果只有一条语句,您不需要使用括号。例如,以下代码可以正常工作:

    for (int i = 0; i < 10; i++)
        if (i == 9)
            break;
    

(即使那段代码没有任何意义)

  1. 你可以按照Skilldrick所说的,在Visual C#中更改设置,以缩短代码:

转到工具 -> 选项 -> 文本编辑器 -> C# -> 格式(或类似的内容,我只有德语版的Visual Studio)。

希望这能帮到你。


0

在C#中,只要ifelse的“块”只是单个语句,就可以省略大括号:

// perfectly legal
if (...)
    return ...
else
    return ...

如果你需要多行的if和else块,那么你就必须使用大括号。

0

C/C++/Java/C#的人们与Cobol/BASIC/Python族群有着一种古老的种族主义家族纷争。这是一个真正的非此即彼的事情...没有最好的两全其美,既要拥有蛋糕,又要吃掉它们的乐趣 :)


-1

对于单个语句,您不需要花括号。对于需要使用它们的情况,您可以将大括号放置在以下位置:

if(expr) {
    ...
} else {
    ...
}

-2

看看scribes,它是一个非常好的编辑器,可以进行大量自定义,我相信你可以用它来完成你需要的工作。


Scribes甚至不支持Windows,那它怎么能满足我的需求呢? - Joe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接