【问题标题】:Calling a Sub and returning a value调用 Sub 并返回一个值
【发布时间】:2012-04-01 07:26:42
【问题描述】:

这似乎是一个非常简单的问题,但我似乎无法在任何地方找到答案。我认为我在 VB 方面表现不错,但前几天我在学习 javascript 时发现了一些看起来很棒的东西,现在我不知道如何在 VB 中做到这一点。

在 javascript 中是这样的:

var someValue = getThatValue()

它从 getThatValue() 子函数调用和设置值。什么是VB等价物?


编辑

我试过这样做:

   private sub main()
       dim value = getValue()
       'do something with value
   end sub

   private sub getValue()
       return 3
   end sub

这似乎不起作用,我怎样才能让它起作用?

【问题讨论】:

  • 在 VB 中,返回值的方法称为函数。不返回值的方法称为 Sub。

标签: vb.net visual-studio


【解决方案1】:
Private Sub Main()
    Dim value = getValue()
    'do something with value
End Sub

Private Function getValue() As Integer
    Return 3
End Function

【讨论】:

    【解决方案2】:

    你应该使用一个属性:

    Private _myValue As String
    Public Property MyValue As String
        Get
            Return _myValue
        End Get
        Set(value As String)
            _myValue = value
         End Set
    End Property
    

    然后像这样使用它:

    MyValue = "Hello"
    Console.write(MyValue)
    

    【讨论】:

    • 当然,VB.NET 现在有了自动属性,所以一行Public Property MyValue As String 就足够了。见msdn.microsoft.com/en-us/library/dd293589.aspx
    • 当然,但最好知道它真正在做什么,因为你不能一直使用快捷方式。例如。如果您想将 Set 更改为不同的修饰符,例如 Private。快捷方式本质上就是为你编写上面的代码。
    【解决方案3】:

    Sub 不返回值,functions 没有副作用。

    有时您需要副作用和返回值。

    一旦您知道 VBA 默认通过引用传递参数,这很容易做到,因此您可以用这种方式编写代码:

    Sub getValue(retValue as Long)
        ...
        retValue = 42 
    End SUb 
    
    Sub Main()
        Dim retValue As Long
        getValue retValue 
        ... 
    End SUb
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 2014-04-08
      相关资源
      最近更新 更多