在if语句中声明字符串并在其外部使用它C#

时间:2013-10-05 10:01:22

标签: c# string if-statement

我一直在编写一个文本冒险游戏,其中一个随机场景是你可以遇到一个神奇宝贝并与之作斗争。有一些选项(比如查看库存)需要你回到菜单(战斗,跑步,物品,poké)。例如,如果您输入了错误的命令,那么您应该返回菜单。但是,在该方法中,唯一的参数是hasEncountered,当触发随机场景时,默认情况下它是假的(bool),这意味着

        if (hasEncountered == false)
        {
            Console.WriteLine("While travelling you go through a patch of tall grass..");
            Thread.Sleep(2000);
            Console.WriteLine("*pokemon music*");
            Thread.Sleep(1500);
            Console.Clear();
            Console.WriteLine("You encounter a {0}!", pokemon1);
        }

被触发。每当用户输入错误的命令时,都会调用该方法。我不希望用户再次看到这部分,所以我这样做了:

        else
        {
            Console.WriteLine(" < {0} >", pokemon1);
        }

但是,if statement中的字符串“pokemon1”未声明,尽管我在方法的开头声明了它。

    public void ConScen3(bool hasEncountered)
    {
        string pokemon1;
        TextAdventure1.ConjoinedScenarios.ConjoinedScenario conScen = new TextAdventure1.ConjoinedScenarios.ConjoinedScenario();
        if (hasEncountered == false)
        {
            Console.WriteLine("While travelling you go through a patch of tall grass..");
            Thread.Sleep(2000);
            Console.WriteLine("*pokemon music*");
            Thread.Sleep(1500);
            Console.Clear();
            Console.WriteLine("You encounter a {0}!", pokemon1);
        }
        else
        {
            Console.WriteLine(" < {0} >", pokemon1);
        }

如果我尝试在pokemon1语句中声明if,则说它已经声明了。但是,如果我在开头删除pokemon1字符串,则其余代码会抱怨它未声明。有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

声明变量(这是string pokemon1;的作用),但你不为其分配值。

您必须为变量赋予一个值,例如pokemon1 = "Foo";

答案 1 :(得分:0)

您需要为pokemon1指定一个值:

public void ConScen3(bool hasEncountered)
    {
        string pokemon1 = "pikachu";
        TextAdventure1.ConjoinedScenarios.ConjoinedScenario conScen = new TextAdventure1.ConjoinedScenarios.ConjoinedScenario();
        if (hasEncountered == false)
        {
            Console.WriteLine("While travelling you go through a patch of tall grass..");
            Thread.Sleep(2000);
            Console.WriteLine("*pokemon music*");
            Thread.Sleep(1500);
            Console.Clear();
            Console.WriteLine("You encounter a {0}!", pokemon1);
        }
        else
        {
            Console.WriteLine(" < {0} >", pokemon1);
        }
    }