C# VB.NET能否创建具有新范围的内联块?

C# VB.NET能否创建具有新范围的内联块?,c#,.net,vb.net,scope,c#-to-vb.net,C#,.net,Vb.net,Scope,C# To Vb.net,在C#中,只需在代码周围放置一些大括号,就可以创建一个新的作用域。例如: { Foo fooA = new Foo(); fooA.doSomething(); fooA.doSomethingElse(); } { // Can't refer to fooA in here. Foo fooB = new Foo(); fooB.doSomething(); fooB.doSomethingElse(); } VB.NET有没有办法

在C#中,只需在代码周围放置一些大括号,就可以创建一个新的作用域。例如:

{
    Foo fooA = new Foo();
    fooA.doSomething();
    fooA.doSomethingElse();
}

{
    // Can't refer to fooA in here.
    Foo fooB = new Foo();
    fooB.doSomething();
    fooB.doSomethingElse();
}
VB.NET有没有办法在不使用任何保留字的情况下创建一个新的作用域?

您可以这样做(远没有C代码那么优雅,但做的是相同的工作):

我不得不质疑你为什么要这么做……重构突然出现在我的脑海中

你可以做到这一点(远没有C代码那么优雅,但做的是同样的工作):

我不得不质疑你为什么要这么做……重构突然出现在我的脑海中

你可以做到这一点(远没有C代码那么优雅,但做的是同样的工作):

我不得不质疑你为什么要这么做……重构突然出现在我的脑海中

你可以做到这一点(远没有C代码那么优雅,但做的是同样的工作):

我不得不质疑你为什么要这么做……重构突然出现在我的脑海中

首先,“不使用任何保留字”的要求并不公平,因为VB.Net使用字而不是大括号。换句话说,C#大括号实际上只是伪装的单词(代词)

这就是说,VB.Net不能完全像C#那样做。为此,您需要某种特定类型的代码块。例如,将该代码包含在始终为真的
If
块中非常简单:

如果为True,则
'...
如果结束
上面的内容与C#基本相同,可能(未经测试)产生的IL与C#几乎相同,因为我希望编译器优化掉任何实际的布尔测试

不过,在本例中,由于两个块做的事情几乎相同,所以无论如何,我都会尝试将代码抽象到它自己的方法中。如果确实需要,甚至可以使用Action或Func委托将所有内容保留在现有的本地方法中,同时避免代码重复

首先,“不使用任何保留字”的要求并不公平,因为VB.Net使用字而不是大括号。换句话说,C#大括号实际上只是伪装的单词(代词)

这就是说,VB.Net不能完全像C#那样做。为此,您需要某种特定类型的代码块。例如,将该代码包含在始终为真的
If
块中非常简单:

如果为True,则
'...
如果结束
上面的内容与C#基本相同,可能(未经测试)产生的IL与C#几乎相同,因为我希望编译器优化掉任何实际的布尔测试

不过,在本例中,由于两个块做的事情几乎相同,所以无论如何,我都会尝试将代码抽象到它自己的方法中。如果确实需要,甚至可以使用Action或Func委托将所有内容保留在现有的本地方法中,同时避免代码重复

首先,“不使用任何保留字”的要求并不公平,因为VB.Net使用字而不是大括号。换句话说,C#大括号实际上只是伪装的单词(代词)

这就是说,VB.Net不能完全像C#那样做。为此,您需要某种特定类型的代码块。例如,将该代码包含在始终为真的
If
块中非常简单:

如果为True,则
'...
如果结束
上面的内容与C#基本相同,可能(未经测试)产生的IL与C#几乎相同,因为我希望编译器优化掉任何实际的布尔测试

不过,在本例中,由于两个块做的事情几乎相同,所以无论如何,我都会尝试将代码抽象到它自己的方法中。如果确实需要,甚至可以使用Action或Func委托将所有内容保留在现有的本地方法中,同时避免代码重复

首先,“不使用任何保留字”的要求并不公平,因为VB.Net使用字而不是大括号。换句话说,C#大括号实际上只是伪装的单词(代词)

这就是说,VB.Net不能完全像C#那样做。为此,您需要某种特定类型的代码块。例如,将该代码包含在始终为真的
If
块中非常简单:

如果为True,则
'...
如果结束
上面的内容与C#基本相同,可能(未经测试)产生的IL与C#几乎相同,因为我希望编译器优化掉任何实际的布尔测试


不过,在本例中,由于两个块做的事情几乎相同,所以无论如何,我都会尝试将代码抽象到它自己的方法中。如果确实需要,甚至可以使用Action或Func委托将所有内容保留在现有的本地方法中,同时避免代码重复

我不认为没有控件结构的大括号特别优雅,所以我会说这个VB代码和C代码一样优雅。我不认为没有控件结构的大括号特别优雅,所以我会说这个VB代码和C代码一样优雅。我不认为没有控件结构的大括号特别优雅,所以我要说这个VB代码和C代码一样优雅。我不认为没有控件结构的大括号特别优雅,所以我要说这个VB代码和C代码一样优雅。
    If True Then
        Dim fooA As New Foo()
        fooA.doSomething()
        fooA.doSomethingElse()
    End If

    If True Then
        ' Can't refer to fooA in here.
        Dim fooB As New Foo()
        fooB.doSomething()
        fooB.doSomethingElse()
    End If