为什么我收到错误消息“错误的返回类型”

时间:2016-01-11 10:19:43

标签: c# textbox return

我收到的错误就像

  

string Calculate_File_Checksum.Form1.button4_Click(object,   System.EventArgs)'的返回类型错误

我不明白为什么会这样?

我想将文件校验和返回到文本框txtFileChecksum

请有人帮助我吗?

这是该按钮背后的代码......

private void button4_Click(object sender, EventArgs e)
{

    using (var md5 = MD5.Create())
    {
        string s = BitConverter.ToString(md5.ComputeHash(File.ReadAllBytes(txtFileText.Text))).Replace("-", "");
        return s;


        txtFileChecksum.Text = s;
    }
}

已编辑...

谢谢你们所有人,我现在已经做到了......它的工作正常,没有返回s;

3 个答案:

答案 0 :(得分:3)

您的方法说其返回类型为void,但您返回string

删除return s,它应该有效。除了此返回类型问题,return关键字将使您退出此方法。所以你永远不会达到textFileChecksum.Text = s;

答案 1 :(得分:1)

因为您不想从返回类型为void的方法返回任何内容。让我再说一点,一个函数将返回(如果它有任何其他返回类型而不是void)特定值给调用函数。在您的情况下,该函数与事件相关联,因此它不允许任何其他返回类型。

考虑:

  

如果您将方法签名中的返回类型更改为字符串,那么您   将收到错误button4_Click(object sender, EventArgs e)' has the wrong return type

在您的代码中,语句return s;不是必需的,您的代码将在没有该语句的情况下完美运行。

答案 2 :(得分:0)

因为你的核心问题已经回答,我会给你一个建议。 我建议拆分代码的逻辑部分(计算校验和)和GUI更改部分(更改文本)。例如,编写一个为你计算校验和的方法:

private string CalculateChecksum(string textFileText) 
{ 
   using (var md5 = MD5.Create()) 
   {
      return BitConverter.ToString(md5.ComputeHash(File.ReadAllBytes(textFileText))).Replace("-", "");
   }
}

然后在您的活动中使用此方法:

private void button4_Click(object sender, EventArgs e)
{
   txtFileChecksum.Text = CalculateChecksum(txtFileText.Text);
}

请注意,这也允许您在类中的其他位置计算校验和,而不必通过传入另一个textFileText来复制代码。