问题实际上比标题要具体得多。 我刚刚经历了一些C#,却遇到了一个错误,我设法修复了这个错误,但我不知道为什么。
为什么在循环中定义了字符串强度时,do-while循环为什么会给我一个错误?
虽然我在do-whiel循环之前定义我的弦功率,但一切都很好,很花哨
String power;
do
{
Console.WriteLine("Enter values X & Y for X+Y");
Console.WriteLine("Your value of X is ");
int numOne = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(" Your value of Y is ");
int numTwo = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Your Sum is {0}", numOne+numTwo);
Console.Write("Turn calculator on or off? ");
power = Console.ReadLine();
} while (power == "on" || power =="On" || power =="ON");
}
}
}
这最终运行良好。
但是下面的示例在while语句中导致有关当前上下文中不存在的名称“ power”的错误。
do
{
Console.WriteLine("Enter values X & Y for X+Y");
Console.WriteLine("Your value of X is ");
int numOne = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(" Your value of Y is ");
int numTwo = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Your Sum is {0}", numOne+numTwo);
Console.Write("Turn calculator on or off? ");
String power;
power = Console.ReadLine();
} while (power == "on" || power =="On" || power =="ON");
}
}
答案 0 :(得分:3)
{ .......... }
创建一个范围。在循环内部定义比while (power...)
部分更深的范围。
基本上,您可以看到嵌套深度较小的范围(if
的范围可以看到方法范围,方法的范围可以看到类范围,类可以看到的名称空间范围,等等。
有关范围界定的更多信息,请参见here。
另一个例子:
public void A()
{
string power = "test";
{
// this works because power is defined in a less deep scope.
Console.WriteLine(power);
}
}
public void B()
{
{
string power = "test";
}
// this doesn't work because power is defined in a deeper scope
Console.WriteLine(power);
}
错误消息所指的“上下文”是:当前作用域及其上方的所有内容。