2015-12-26 223 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(); 

玩得開心學習!