c# - VB.NET 的方法体内不允许代码区域?

标签 c# .net vb.net code-regions

注意:此“功能”现已添加到 Visual Studio 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# 版本没问题。

最佳答案

我认为代码区域可能不会在方法主体中得到支持,因为正如您所说,它们将是一个(有点)“荒谬的功能” - 但是,在 C# 中,这确实有效,至少在 VS 2008 和 VS 2010 中——只是不在 VB.NET 中。

话虽这么说,我会避免它。将区域放在方法体内只会导致人们制作更大的方法(因为这是唯一值得的时候),这是应该避免的事情,而不是鼓励。

如果您的代码:

defies simple refactoring such as method extraction

相反,我会专注于进行“复杂”重构(或任何所需的)来尝试分解这些方法。您的“四五百行”长方法在当前状态下根本无法维护。

就我个人而言,我会让它们造成“痛苦”——明确表示它们需要工作,就在前面和中间,直到您可以分解它们并重构部分。

关于c# - VB.NET 的方法体内不允许代码区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3151722/

相关文章:

c# - 如何向 Xelement 添加属性

c# - 在 C# 中将单个十六进制字符转换为其字节值

vb.net - 覆盖 datagridview 上的 keydown Enter

c# - 添加更多我的用户控件容器或用户控件集合显示

C# 从 HttpWebRequest/WebResponse 中过滤 JS 文件

.net - DataGridView、BindingList<T>、DataGridViewComboBoxColumn

vb.net - 图片框变成空白

vb.net - vb中获取多个文件的创建日期

c# - gridview 中的标签更改但更改不回发

c# - 使用事件记录是个好主意吗?