【发布时间】:2010-09-24 13:58:38
【问题描述】:
在我正在编写的应用程序中,其中一种方法允许将用户输入的数字转换为字母。
例如,用户将输入成绩(作为双打),程序将决定(当满足条件时)返回与数字相关联的字母。最初,我是这样写的:
public void GetGrade(double scores)
Console.Write("Score of {0} earns: ", score);
if (score >= 95.0)
Console.WriteLine("A+");
else if (score >= 90.0)
Console.WriteLine("A");
else if (score >= 85.0)
Console.WriteLine("B+");
else if (score >= 80.0)
Console.WriteLine("B");
else if (score >= 75.0)
Console.WriteLine("C+");
else if (score >= 70.0)
Console.WriteLine("C");
else if (score >= 65.0)
Console.WriteLine("D+");
else if (score >= 60.0)
Console.WriteLine("D");
else
Console.WriteLine("F");
但是在编写时需要考虑到 RETURN。
所以,我认为它应该是公共字符串GetGrade(double scores)
因为它在一个数组中,所以我需要:
foreach(double score in scoress)
{
THE CODE I POSTED ABOVE
}
除非我将所有console.writelines 更改为返回。
但是,当我这样做时,我收到一个语法错误告诉我:
不能在此范围内声明名为 score 的局部变量,因为它会给“score”赋予不同的含义,后者已在父范围或当前范围中用于表示其他内容。
所以,我认为我不能使用score,因为标头已经包含score。
我该如何让它按照我想要的方式工作?
【问题讨论】:
-
看起来像是明显的名称冲突。你能发布整段代码吗?
-
这一种方法九种左右。那将是相当多的。我设法在其他三种方法中使用相同的 foreach 语句,但这些方法的标题名称与此方法不同。因此,我认为您对名称冲突的评估是正确的。我现在才确定如何更改它。
-
尝试删除代码,直到 (a) 它足够简单,可以在此处发布或 (b) 问题消失。在(b)的情况下,名称冲突发生在被删除的代码中。