【问题标题】:Select case for various input amounts选择各种输入金额的案例
【发布时间】:2015-05-16 22:46:29
【问题描述】:

这是我目前所拥有的;

    Function myChoice(ByVal opt1 As String, ByVal opt2 As String, ByVal opt3 As String, ByVal opt4 As String)

    Dim choose As String
    Dim mynum As Integer

    Randomize()
    mynum = Int(Rnd() * 4 + 1)

    Select Case mynum
        Case 1
            choose = opt1
        Case 2
            choose = opt2
        Case 3
            choose = opt3
        Case 4
            choose = opt4
    End Select

    myChoice = choose

End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    MsgBox(myChoice("Red", "Orange", "Yellow", "Green"))

End Sub

我想要做的不是将 ByVal opt1 作为字符串,ByVal op2 ..... 如果我说 100 种颜色,我如何让函数有 100 个选择,并且有 100 个“案例”事件而不用全部输入?

我觉得我可能需要一个循环,也可能需要一个数组,但除此之外,我很难过。

谢谢。

【问题讨论】:

    标签: arrays vb.net function for-loop select-case


    【解决方案1】:

    首先使用ParamArray 参数。然后使用Random 类获取随机项。如果您要在短时间内多次调用此方法,我会使用上面的方法。

    Function ChooseOne(ParamArray opts() As String)
      Static rnd As New Random
      Return opts(rnd.Next(0, opts.Count))
    End Function
    

    或者更简单!

    Function ChooseOne(ParamArray opts() As String)
      Return opts(New Random().Next(0, opts.Count))
    End Function
    

    【讨论】:

    • 我认为值得指出的是,您的简单方法不适合在很短的时间内(通常为 15 毫秒)内多次调用 ChooseOne 的情况,因为它可能多次返回相同的值。一般来说,我更喜欢你的第一种方法。
    • 是的,我几乎就种子方面的问题发表了评论。感谢您对此的关注。 @布莱克伍德
    猜你喜欢
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    • 2020-06-04
    • 2012-11-07
    • 2023-01-26
    • 1970-01-01
    • 2014-09-22
    • 2015-04-25
    相关资源
    最近更新 更多