VB.Net 代码比较 - 哪个更好,为啥?

Posted

技术标签:

【中文标题】VB.Net 代码比较 - 哪个更好,为啥?【英文标题】:VB.Net Code comparision - which one is better and why?VB.Net 代码比较 - 哪个更好,为什么? 【发布时间】:2020-04-17 12:48:10 【问题描述】:

这是我的第一篇文章。 你能给我一些提示,哪些代码更好,为什么? 主要是这两个代码的作用相同,但使用了其他方法。 干杯

第一密码

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Age.Click
    Dim age As Integer
    Dim boxinput As String

    boxinput = InputBox("Please input your age", "Age input", "28")

    Try
        age = boxinput


    Catch ex As Exception
        If boxinput = "" Then
            MessageBox.Show("You clicked cancel!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)

            Exit Sub
        Else
            MessageBox.Show("Correct your age!" & Environment.NewLine & "Input number only!")
        End If

    End Try

End Sub

第二个密码

Private Sub Age2_Click(sender As Object, e As EventArgs) Handles Age2.Click
    Dim age As Integer
    Dim boxinput As String

    boxinput = InputBox("Please input your age", "Age input", "28")

    If boxinput = "" Then
        MessageBox.Show("You clicked cancel!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Exit Sub
    ElseIf IsNumeric(boxinput) Then
        age = CInt(boxinput)
    Else
        MessageBox.Show("Correct your age!" & Environment.NewLine & "Input number only!")
    End If

End Sub

【问题讨论】:

首先,请确保 Visual Studio 使用的是 Option Strict On。微软一直“忘记”让它成为新项目的默认设置。然后它可以自动向您显示第一个示例中的错误,并为您在新项目中防止此类错误。 是的,你是对的。我忘记了这个选项。这表明我认为第二个代码更可取。谢谢! 【参考方案1】:

还有 Integer.TryParse (如果使用其他数字,它们也有 TryParse)。此外,正如 cmets 中所指出的,您应该始终为控件使用有意义的名称,表单名称也是如此。

表单名称应反映表单的用途,同样,按钮名称应反映操作,例如btnGetPersonAgeButton、GetPersonAgeButton 等

考虑以下

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim age As Integer
        Dim boxinput As String

        boxinput = InputBox("Please input your age", "Age input", "28")

        If Integer.TryParse(boxinput, age) Then
            MessageBox.Show($"Age is age")
        Else
            MessageBox.Show($"'boxinput' must be a number")
        End If
    End Sub
End Class

【讨论】:

我想我也会在表单和按钮命名以及在方法顶部声明变量而不是在使用点附近声明变量 :) @CaiusJard - 很好,我在微软论坛上回答问题时会这样做,有时它会坚持但并非总是如此。 我认为这不能回答“哪个更好,为什么?”的问题。另一个答案确实回答了这个问题。 TryParse 在这里看起来确实更体面。谢谢!【参考方案2】:

第二个选项更可取。

解释抄自here:

抛出异常是昂贵的。不要使用异常来控制应用程序流。如果您可以合理地预期在正常运行代码的过程中会发生一系列事件,那么您可能不应该在这种情况下抛出任何异常。

【讨论】:

这完全解释了问题。谢谢;)

以上是关于VB.Net 代码比较 - 哪个更好,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET和C++之间的区别

为啥vb.net用的人这么少,而C#.net用的人那么多呢?

为啥这个数据库访问代码不起作用? VB.net

C# 到 VB.Net:为啥转换为 VB 时编译失败?

VB.net 和C#.net 各有啥优缺点

哪个 IDE 用于基于 .NET 框架 2.5 构建的 VB.NET 代码?