2013-10-10 43 views
0

我最近在C#編寫的這短短的應用:C# - 使用設置

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Checker 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Properties.Settings.Default.Save(); 
      Program re = new Program(); 
      re.next(); 
     } 
     public void next() 
     { 
      Console.WriteLine("Have you already entered name?"); 
      int ch = int.Parse(Console.ReadLine()); 
      if (ch == 0) 
      { 
       Console.WriteLine("What is your name?"); 
       String name = Console.ReadLine(); 
       Console.WriteLine("Thank you!"); 
       Console.ReadKey(); 
      } 
      Console.WriteLine("Your name is " + name); 
     } 
    } 
} 

現在,我已經創建了一個設置文件,並創建了一個「名」變量存在,與「字符串」類型。

它的範圍是「用戶」。

所以我想它加載與特性線「名稱」變量,但我甚至無法編譯,因爲這個錯誤的程序:

Error 1 The name 'name' does not exist in the current context 

我該如何解決呢?

+0

'Properties.Settings'與您當前的代碼有什麼關係? – Habib

回答

0

您聲明變量裏面的if塊。
由於編譯器試圖告訴你,它不在該塊外部。

如果您想使用您的Settings班,請寫Settings.Default.Name

4

當你縮進回答你的問題變得有點更加明顯:

String name; 
if (ch == 0) 
{ 
    Console.WriteLine("What is your name?"); 
    name = Console.ReadLine(); 
    Console.WriteLine("Thank you!"); 
    Console.ReadKey(); 
} 
else 
{ 
    name = Settings.Default.name; 
} 
Console.WriteLine("Your name is " + name); 

現在你可以看到你的if塊中定義的字符串叫名字,所以使用它在Console.WriteLine命令if-block外面超出範圍!移動if-block中最後一個Console.WriteLine來解決範圍問題。


編輯:基於您的評論,您的代碼需要多一點的邏輯來實現你想要做什麼。我更新了上面的代碼片段,完成了我認爲你想要做的事情。

+0

但我想顯示保存的名稱,而不是用戶輸入的新名稱。 – BlueRay101

+0

我做了if塊來詢問用戶是否已經輸入了名字。如果他這樣做,他會看到他輸入的名稱(這是應該檢索的變量「名稱」)。 – BlueRay101

+0

查看更新的答案。 – pineconesundae

0

你的意圖有點不清楚,但對我來說,好像你正在試圖讓應用程序顯示用戶的名字(如果它已經被保存)或者如果它沒有被請求。如果是這樣的話,這樣的事情應該工作:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Checker 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Program re = new Program(); 
      re.next(); 
      Properties.Settings.Default.Save(); 
     } 
     public void next() 
     { 
      String name = Settings.Default.name; 
      if (String.IsNullOrEmpty(name)) 
      { 
       Console.WriteLine("What is your name?"); 
       name = Console.ReadLine(); 
       Settings.Default.name = name; 
       Console.WriteLine("Thank you!"); 
       Console.ReadKey(); 
      } 
      else 
      {      
       Console.WriteLine("Your name is " + name); 
      } 
     } 
    } 
} 

在你的OP,您的設置並沒有被該程序退出,也不是你設置的名稱屬性之前保存。