我收到的错误就像
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;
答案 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来复制代码。