C# 返回函数

本文关键字:函数 返回 | 更新日期: 2023-09-27 18:08:52

private void button3_Click_1(object sender, EventArgs e)
{
    textBox2.Text = "$" + (textBox1.Text = string.Format(System.Globalization.CultureInfo.GetCultureInfo("us-US"), "{0:#,##0.00}", double.Parse(textBox1.Text)));
    string digits, temp;
    long numberVal;
    string[] powers = new string[] { "Thousand ", "Million " };
    string[] ones = new string[] { "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" };
    string[] tens = new string[] { "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" };
    string[] currency = new string[] { "Dollars" };
    string wordValue = "";
    if (numberVal == 0) 
        return "Nol";
    if (numberVal < 0)
    {
        wordValue = "negative ";
        numberVal = -numberVal;
    }
    long[] partStack = new long[] { 0, 0, 0, 0 };
    int partNdx = 0;
    while (numberVal > 0)
    {
        partStack[partNdx++] = numberVal % 1000;
        numberVal /= 1000;
    }
    for (int i = 3; i >= 0; i--)
    {
        long part = partStack[i];
        if (part >= 100)
        {
            wordValue += ones[part / 100 - 1] + " Ratus ";
            part %= 100;
        }
        if (part >= 20)
        {
            if ((part % 10) != 0) wordValue += tens[part / 10 - 2] +
               " " + ones[part % 10 - 1] + " ";
            else wordValue += tens[part / 10 - 2] + " ";
        }
        else if (part > 0) wordValue += ones[part - 1] + " ";
        if (part != 0 && i > 0) wordValue += powers[i - 1];
    }
    textBox3.Text = return wordValue;
}

我正在尝试将长类型的数字转换为字符串单词。

为什么我的函数返回错误,是我用错了还是别的什么?

C# 返回函数

在 C# 中,return 关键字用于从函数返回值。在您的情况下,您没有返回任何内容,但您希望为某个属性分配一个值,这是完全不同的东西。

删除return关键字。

编辑
似乎您复制并粘贴了一些代码,而没有真正了解它的作用。您从中复制代码的函数将数字转换为其文本表示形式,并将该文本表示形式作为文本返回。

现在,您尝试在事件处理程序中使用此代码,直接将结果分配给文本框。如果您将任何return "..."语句替换为

{
    textbox3.Text = "...";
    return;
}

最干净的解决方案是将代码复制到函数中并正确使用它。


需要 return 关键字的函数示例:

string SayHello(string user)
{
    return "Hello " + user;
}

不返回值但可以使用return中断的方法的示例:

void DoSomething()
{
    if (!myConditionIsMet)
        return;
    DoSomethingElse();
}

不能使用 return 关键字的作业示例:

string name = "Brad";
name = name + " Pitt";
textBox3.Text = return wordValue; 

不是有效的 C# 代码。

写这样的东西:

 textBox3.Text = wordValue;

并且没有返回,正如函数定义:void,没有什么可返回的。

试试这个:

//textBox3.Text = return wordValue;
textBox3.Text = wordValue;
这是

不正确的文本框3.文本 = 返回单词值;

制作如下

文本框3.文本 = 单词值;

由于函数是空的,因此没有什么可以返回的。

您的方法(button_click事件(具有包含void返回类型的方法符号。

这意味着该方法不打算返回任何内容。

同样,return语句不能作为赋值语句的一部分放置(不能将其放在"="的右侧(。

正如其他人所说,您只需删除return关键字即可获得所需的结果。 在检查numberval == 0之后,您还需要删除代码中更靠上的 return 语句

需要返回的位置是其标头指示返回类型(void 以外的任何方法(。 在这些方法中,您在它自己的语句的开头使用 return 来返回它后面的值或对象。

例如:

/* In a method somewhere */
int foo = Bar();
/* The Bar method */
public int Bar()
{
    /* Whatever code runs */
    return 3; //return an object or value whose type matches the type the method signiture says you return
}