备注:这个“特性”现在已经添加到Visual 2015中,但是这个问题将持续很长一段时间,因为并不是每个开发人员或每个开发人员商店一推出就可以访问最新和最优秀的IDE。
原始问题:
通常,我不会“需要”或者甚至不会考虑一个可笑的特性,比如方法体中的代码区域,但是:我正在重构VB.NET代码,其中方法通常运行500行或更多的代码,而且引用是如此紧密耦合,以至于代码无法进行简单的重构,比如方法提取。
这就是为什么我认为我会尝试在一个方法体中的区域。我只是想在短期内组织代码。但是IDE不允许我(导致编译器错误)。我只是好奇为什么?似乎代码区域不应该影响编译器、智能感知等等。我是不是遗漏了什么?(仍在使用VS 2005 )
有趣:,这似乎是特定于语言的。这在C#中是可以的(我最初没有检查过),但在VB.NET中没有。
public module MyModule
Sub RunSnippet()
dim a as A = new A (Int32.MaxValue )
#region
Console.WriteLine ("")
#end region
....这会得到一个编译器错误,但是C#版本是可以的。
发布于 2015-11-24 01:21:22
到2015年11月的: In Visual 2015,现在支持它,只需做您喜欢的事情。
示例代码:
With frmMain
#region "A sample region in odd place"
.show()
.text = "Sample"
#end region
End With注意:在早期版本的Visual中似乎不是在VB.NET中工作,而是在C#中工作。
发布于 2010-06-30 17:23:50
我认为代码区域可能不会在方法体中得到支持,因为就像您所说的那样,它们将是一个(有点)“荒谬的特性”--然而,在C#中,这个会工作,至少在VS 2008和VS 2010中是这样的--而不是在VB.NET中。
话虽如此,我还是会避免的。将区域放入方法体内只会导致人们做出更大的方法(因为这是唯一值得的时候),这是应该避免的,而不是鼓励。
如果您的代码:
挑战简单的重构,例如方法提取。
相反,我会专注于进行“复杂”重构(或任何可能发生的事情),以尝试拆分这些方法。您的“四五百行”长方法不可能在当前状态下可维护。
就我个人而言,我会让他们造成“痛苦”--让他们明白,他们需要工作,就在正前方和中间,直到你能把他们拆开,重新分解部分。
发布于 2010-06-30 18:14:24
在VisualBasic9.0语言规范的第3.3章中,它是明确的:
区域指令组源代码行,但对编译没有其他影响。可以在集成开发环境(IDE)中折叠、隐藏或展开和查看整个组。这些指令是特殊的,因为它们不能在方法体中启动或终止。
或者换句话说:您不能这样做,因为规范是这么说的。
至于为什么它是这样指定的,我认为这与VB所拥有的由来已久的IDE特性有关: Tools + Options、Text Editor、Basic、VB专用的、显示过程行分隔符。这只是猜测,可能不是很好。
更新:现在由罗斯林支持,首先包含在VS2015中。
https://stackoverflow.com/questions/3151722
复制相似问题