2015-12-26 224 views
2

所以我对C#完全陌生,实际上我刚开始学习半小时前的语法。C#给变量赋新值

我到目前为止所做的只是搞乱了语法,并且做了几行代码的交互式输入程序。当我输入我的代码并想要运行该程序时,它给了我一个错误。

 Console.Write("What is your name?: "); 
     string name = Console.ReadLine(); //'name' used here 
     Console.WriteLine("Hello " + name); 
     Console.ReadLine(); 

     Console.Write("How old are you?: "); 
     int age = Convert.ToInt32(Console.ReadLine()); 
     Console.WriteLine("So you're name is " + name + " and you are " + age + " years old?"); 
     Console.ReadLine(); 

     Console.Write("Tell me, yes or no?: "); 
     string answer = Console.ReadLine(); 


     if (answer == "no" || answer == "No") 

     { 
      Console.Write("Ahh okay, what was your name again?: "); 
      string name = Console.ReadLine(); //'name' used here 
     } 

“本地或参数命名为‘名’不能在此范围内声明......”

我知道这个问题必须是在代码的最后一行,在那里我分配了一个新的价值到字符串'name'。我知道这在PHP中是可行的,为变量赋值。正如我所说的完全陌生的C#,我想知道是否有办法做到这一点?

+1

只需在第二个'name = Console.ReadLine();'之前删除'string'。 – Dmitry

+2

你已经有一个名为变量! – TaW

+1

也许一个C#教程是一个很好的起点,然后:https://channel9.msdn.com/Series/C-Sharp-Fundamentals-Development-for-Absolute-Beginners – PiotrWolkowski

回答

2

只是你不能两次声明一个变量。当你输入string name时,你正在声明它。尝试如下:

string name; 
    Console.Write("What is your name?: "); 
    name = Console.ReadLine(); 
    Console.WriteLine("Hello " + name); 
    Console.ReadLine(); 

    Console.Write("How old are you?: "); 
    int age = Convert.ToInt32(Console.ReadLine()); 
    Console.WriteLine("So you're name is " + name + " and you are " + age + " years old?"); 
    Console.ReadLine(); 

    Console.Write("Tell me, yes or no?: "); 
    string answer = Console.ReadLine(); 


    if (answer == "no" || answer == "No") 

    { 
     Console.Write("Ahh okay, what was your name again?: "); 
     name = Console.ReadLine(); 
    } 

希望这会有所帮助。

+0

哈哈,我知道这件事很简单。非常感谢! :) – Yakushi

+0

不客气。 – Baltasarq

0

名称已被声明。要分配新值,您不需要指定变量的类型。所以删除string之前name在最后一行。

0

尝试删除“字符串”?

{ 
     Console.Write("Ahh okay, what was your name again?: "); 
     **name** = Console.ReadLine(); 
    } 
2

这是因为你重新声明了变量名两次。只要删除字符串声明。您也不能在子范围中定义相同的变量名称。 (在{ }之间)

if (answer == "no" || answer == "No") 

    { 
     Console.Write("Ahh okay, what was your name again?: "); 
     name = Console.ReadLine(); 
    } 
2

的问题是,您声明您的字符串变量name在这一行:

string **name** = Console.ReadLine(); 

然后,你if语句中,您尝试再次声明。如果你的意思是“重用”相同的变量,只是删除了弦线部分(即告诉C#您声明一个String类型的变量):

name = Console.ReadLine(); 

玩得开心学习!