当前上下文中不存在'Var'(在我的方法中丢失)

时间:2014-02-04 13:13:53

标签: c# string methods console var

Newb在这里做了一些非常愚蠢的事我确定。

我正在尝试将一行代码转移到一个方法中。但是,当我这样做时,代码不再返回字符串变量'selection',就像我认为的那样,并且当我尝试测试打印它以确认我拥有它时不会返回它。

我期待发生的是GetSelection()会调用GetString来要求用户选择B,L或D,并根据用户输入,它将返回选择,然后打印到控制台。

代码:

while (PlayAgain())
{
     GetSelection("(B)reakfast | (L)unch | (D)inner\n");
     Console.WriteLine("You Selected: " + selection); 
}

我的方法:

public String GetString(String txtStr)
{
     Console.Write(txtStr + ": ");
     return Console.ReadLine().ToLower().Trim();
}

public String GetSelection(String txtStr)
{
     String selection = GetString("(B)reakfast | (L)unch | (D)inner\n");
     return selection;
}

public Boolean PlayAgain()
{
     String answer = GetString("Meal recommendation (Y) or (N)? ").ToLower().Trim();
     return answer == "y";
}

请知道我已经尝试谷歌这个问题并阅读一些好东西,但我没有连接/理解我正在阅读的内容,以了解我的错误。谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

你的错误在这里:

GetSelection("(B)reakfast | (L)unch | (D)inner\n");

您正在呼叫GetSelection,但您没有存储返回值。使用此:

var selection =  GetSelection("(B)reakfast | (L)unch | (D)inner\n");
Console.WriteLine("You Selected: " + selection); 

答案 1 :(得分:1)

此处的问题是selction是方法GetSelection的局部变量。因此,您无法访问代码中的section

要解决此更改,您的代码如下所示,表示您需要存储来自方法GetSelection的值并显示它。

while (PlayAgain())
{
    var selection= GetSelection("(B)reakfast | (L)unch | (D)inner\n");
     Console.WriteLine("You Selected: " + selection); 
}