2014-01-18 117 views
0

函数中可能有函数吗?函数中是否可以有函数?

事情是这样的:

Public Class Form1 
    Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click 
     Sub anim() Handles form2.Shown 
      Me.Refresh() 
      Do Until Me.Location.X = 350 
       form2.Location = New Point(Me.Location.X + 1, 250) 
       ' System.Threading.Thread.Sleep(0.5) 
      Loop 
      form2.close() 
     End Sub 
    End Sub 
End Class 
+2

你的代码是荒谬的。首先,它们都是子功能而非功能。函数的目的是能够调用它包含的可重用代码。由于参数的原因,你将无法调用'button1_Click.Anim'。接下来,在动画中没有代码也不是Click的一部分(所以它们是相同的)。您可能想要的是将'Anim'移动到其他地方,以便您可以从此Click事件或其他点击中调用它,或者因为代码逻辑需要它。 – Plutonix

回答

3

它是不可能在VB.NET一个完全成熟的嵌套函数定义。语言不支持它看起来很像嵌套函数多行lambda表达式:

Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click 
    Dim anim = 
    Sub() 
     Me.Refresh() 
     ... 
    End Sub 
End Sub 

有虽然有些显着的差异:

  • 不能有Handles条款。
  • 不能是ImplementsOverrides
  • lambda的实例被命名,而不是Sub定义。
  • 在这种情况下,anim实际上是一个代表而不是一个函数。
+0

是吗?我们不能在带有句柄的子句中使用句柄子句吗?即时通讯只是一个noobie编程的东西.. –

+0

@ yoyieyoyie你不能做一个子句柄内的另一个子时期。该语言只设置为处理真实/外部函数定义的子句 – JaredPar

+0

@yoyieyoyie:你想达到什么目的?你需要开始思考这个方向。所以你的第一个问题是**不是你可以做**,或者**你怎么做**,但是为什么你需要做**。一旦你清楚了,请更新你的问题,提供更多信息。 – Neolisk

相关问题