2

我正在从事另一个学校项目,并且正在学习如何创建一个Function. 在此示例中,我需要创建一个Function列出我手动输入的“顶级捐赠者”的列表。我遇到的错误是我已经创建了我的Function,但最后当我尝试以 结束它时Return String,我遇到了一个语法错误,我不确定我需要在它后面加上什么。

Public Class Form1
    Function GetTopDonors() As String
        Dim sb As New StringBuilder()
        sb.Append("Frank, $1,000,000")
        sb.Append("Joe, $980,000")
        Return String
    End Function

    Private Sub btnDisplay_Click(sender As System.Object, e As System.EventArgs) Handles btnDisplay.Click
        Dim TopDonors As String = GetTopDonors()
        txtDonorList.Text = TopDonors
    End Sub
End Class

在此处输入图像描述

4

4 回答 4

5

将其更改为:Return sb.ToString()它应该适合您。这将返回 StringBuilder 的字符串值,这是您想要的,因为该函数返回一个字符串。 String它本身就是一个类型,所以你不能返回它——你必须返回它的一个实例。

有道理?

于 2013-10-22T19:18:26.193 回答
3

StringType,而不是变量,所以Return String. 您需要返回变量的值,而不是变量的类型。因此,虽然您不能Return String,但例如,您可以返回任何字符串变量,如下所示

Function GetTopDonors() As String
    Dim x As String
    Return x
End Function

在您的情况下,您使用的是 a StringBuilder,它实际上不是 a String,但可以String通过调用该ToString方法将其转换为 a ,如下所示:

Function GetTopDonors() As String
    Dim sb As New StringBuilder()
    sb.Append("Frank, $1,000,000")
    sb.Append("Joe, $980,000")
    Dim myString As String = sb.ToString()
    Return myString
End Function

或者,您可以跳过创建myString变量并直接返回转换后的值,如下所示:

Function GetTopDonors() As String
    Dim sb As New StringBuilder()
    sb.Append("Frank, $1,000,000")
    sb.Append("Joe, $980,000")
    Return sb.ToString()
End Function

你很快就会发现,但我还应该提到你可能想要AppendLine而不是Append.

于 2013-10-22T19:22:02.363 回答
1

使用StringBuilder.ToString()方法从构建器获取字符串。

Function GetTopDonors() As String
    Dim sb As New StringBuilder()

    sb.Append("Frank, $1,000,000")
    sb.Append("Joe, $980,000")

    Return sb.ToString()
End Function
于 2013-10-22T19:18:28.543 回答
1

由于您想返回StringBuilder( sb) 的字符串值,因此您必须调用ToString它来返回字符串值。

Return sb.ToString()
于 2013-10-22T19:18:45.227 回答