首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按值传递参数

按值传递参数
EN

Stack Overflow用户
提问于 2015-07-18 00:49:09
回答 1查看 61关注 0票数 1

总的来说,我正在学习Visual,我目前正在开发一个Windows应用程序。我有两个文本框方法(usernameTextBoxpasswordTextBox)。其中,用户将输入数据,然后单击submit按钮(Button1_Click)。该方法将调用connect。我想要做的是,让用户输入-他们的用户名和密码。然后通过值传递它,而不是在Button方法中调用它时将其引用到connect()

有点像认证页面。现在,我在connect(FirstName:="JohnDoe", Password:="password")中有了一些价值--这基本上是为了测试MySQL服务器,并演示我试图尝试的内容。

代码语言:javascript
复制
Imports MySql.Data.MySqlClient
Public Class SecurePasswordList
    Dim conn As New MySqlConnection
    Public Sub connect(ByVal FirstName As String, ByVal Password As String)
        Dim DatabaseName As String = "mysql"
        Dim server As String = "10.1.0.0"
        If Not conn Is Nothing Then conn.Close()
        conn.ConnectionString = String.Format("server={0}; user id={1}; password={2}; database={3}; pooling=false", server, FirstName, Password, DatabaseName)
        Try
            conn.Open()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        conn.Close()
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        connect(FirstName:="JohnDoe", Password:="password")
    End Sub

    Private Sub SecurePasswordList_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub

    Private Sub usernameTextBox_TextChanged(sender As Object, e As EventArgs) Handles usernameTextBox.TextChanged
        Dim FirstName As String
        FirstName = usernameTextBox.Text
    End Sub

    Private Sub passwordTextBox_TextChanged(sender As Object, e As EventArgs) Handles passwordTextBox.TextChanged
        Dim Password As String
        Password = passwordTextBox.Text
    End Sub
End Class
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-18 00:58:20

变化

代码语言:javascript
复制
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    connect(FirstName:="JohnDoe", Password:="password")
End Sub

代码语言:javascript
复制
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    connect(FirstName, Password)
End Sub

但是,您应该确保FirstName和密码被初始化并作为类变量保存。移动

代码语言:javascript
复制
Dim FirstName As String
Dim FirstName As String

要在类中,而不是事件处理函数(单击等)。如下所示:

代码语言:javascript
复制
Public Class SecurePasswordList
    Dim conn As New MySqlConnection
    Dim FirstName As String
    Dim FirstName As String

但实际上您可以这样重做代码(因为您只需要控件中的文本):

代码语言:javascript
复制
Imports MySql.Data.MySqlClient
Public Class SecurePasswordList
    Dim conn As New MySqlConnection
    Public Sub connect(ByVal FirstName As String, ByVal Password As String)
        Dim DatabaseName As String = "mysql"
        Dim server As String = "10.1.0.0"
        If Not conn Is Nothing Then conn.Close()
        conn.ConnectionString = String.Format("server={0}; user id={1}; password={2}; database={3}; pooling=false", server, FirstName, Password, DatabaseName)
        Try
            conn.Open()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        conn.Close()
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        connect(usernameTextBox.Text, passwordTextBox.Text)
    End Sub

End Class

我认为传递价值或参考并不是问题所在。是否希望connect函数修改传递给它的字符串?我怀疑。因此,在这种情况下,值或引用是可以的。字符串由复制的实例通过引用传递,因此实际上它们是通过值传递的,除非在函数声明中使用Byref。默认情况下,在VB中,每个类(int、string等)传递的方式不同。如果指定Byval或Byref,则需要检查每个类型以了解它将做什么。如果使用Byval,String将创建字符串的副本,但实际上是使用指向新创建的字符串的指针访问的。所以这也取决于你想挖多深

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31486705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档