首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VB.NET中不允许在方法体中使用代码区域?

VB.NET中不允许在方法体中使用代码区域?
EN

Stack Overflow用户
提问于 2010-06-30 17:21:09
回答 7查看 26.1K关注 0票数 33

备注:这个“特性”现在已经添加到Visual 2015中,但是这个问题将持续很长一段时间,因为并不是每个开发人员或每个开发人员商店一推出就可以访问最新和最优秀的IDE。

原始问题:

通常,我不会“需要”或者甚至不会考虑一个可笑的特性,比如方法体中的代码区域,但是:我正在重构VB.NET代码,其中方法通常运行500行或更多的代码,而且引用是如此紧密耦合,以至于代码无法进行简单的重构,比如方法提取。

这就是为什么我认为我会尝试在一个方法体中的区域。我只是想在短期内组织代码。但是IDE不允许我(导致编译器错误)。我只是好奇为什么?似乎代码区域不应该影响编译器、智能感知等等。我是不是遗漏了什么?(仍在使用VS 2005 )

有趣:,这似乎是特定于语言的。这在C#中是可以的(我最初没有检查过),但在VB.NET中没有。

代码语言:javascript
复制
public module MyModule
    Sub RunSnippet()
        dim a as A = new A (Int32.MaxValue )

        #region 
        Console.WriteLine ("")
        #end region
       ....

这会得到一个编译器错误,但是C#版本是可以的。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-11-24 01:21:22

到2015年11月的 In Visual 2015,现在支持它,只需做您喜欢的事情。

示例代码:

代码语言:javascript
复制
With frmMain
#region "A sample region in odd place"
  .show()
  .text = "Sample"
#end region
End With

注意:早期版本的Visual中似乎不是在VB.NET中工作,而是在C#中工作。

票数 12
EN

Stack Overflow用户

发布于 2010-06-30 17:23:50

我认为代码区域可能不会在方法体中得到支持,因为就像您所说的那样,它们将是一个(有点)“荒谬的特性”--然而,在C#中,这个会工作,至少在VS 2008和VS 2010中是这样的--而不是在VB.NET中。

话虽如此,我还是会避免的。将区域放入方法体内只会导致人们做出更大的方法(因为这是唯一值得的时候),这是应该避免的,而不是鼓励。

如果您的代码:

挑战简单的重构,例如方法提取。

相反,我会专注于进行“复杂”重构(或任何可能发生的事情),以尝试拆分这些方法。您的“四五百行”长方法不可能在当前状态下可维护。

就我个人而言,我会让他们造成“痛苦”--让他们明白,他们需要工作,就在正前方和中间,直到你能把他们拆开,重新分解部分。

票数 19
EN

Stack Overflow用户

发布于 2010-06-30 18:14:24

在VisualBasic9.0语言规范的第3.3章中,它是明确的:

区域指令组源代码行,但对编译没有其他影响。可以在集成开发环境(IDE)中折叠、隐藏或展开和查看整个组。这些指令是特殊的,因为它们不能在方法体中启动或终止。

或者换句话说:您不能这样做,因为规范是这么说的。

至于为什么它是这样指定的,我认为这与VB所拥有的由来已久的IDE特性有关: Tools + Options、Text Editor、Basic、VB专用的、显示过程行分隔符。这只是猜测,可能不是很好。

更新:现在由罗斯林支持,首先包含在VS2015中。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3151722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档