2014-04-16 44 views
1

我是c#的初學者。 在編程運行的時候,我們怎樣才能把沒有異常的變量類型解析成變量呢?我們不知道用戶會輸入什麼類型。運行時獲取輸入類型

我tyring做到這一點

Console.WriteLine("Enter Something From Keybord"); 
     var variable = Console.ReadLine(); 

     switch (variable.GetType()) 
     { 
      case System.Int32: 
         variable += 1; 
         Console.WriteLine(variable); 
       break; 
      case System.String: 
         variable +="*"; 
         Console.WriteLine(variable); 
         break; 
      case System.Double: 
         variable += 1; 
         Console.WriteLine(variable); 
         break; 
      default: 
       break; 
     } 

回答

2

Console.ReadLine method回報string根據你的輸入流作爲一個字符。

你的variable永遠是一個string不管哪種類型的數據輸入它。這就是爲什麼你的variable.GetType()總是返回System.String。在這種情況下,使用開關語句將不合邏輯。

如果要檢查你的輸入是一個有效的Int32Double,您可以使用Int32.TryParseDouble.TryParse方法來檢查他們,他們是有效的intdouble

Console.WriteLine("Enter Something From Keybord"); 
var variable = Console.ReadLine(); 
int i; 
double d; 
if(Int32.TryParse(variable, out i)) 
{ 
    // Your variable is a valid int and it's value assingned to i. 
} 

if(Double.TryParse(variable, out d)) 
{ 
    // Your variable is a valid double and it's value assingned to d. 
} 
+0

因此,如何能我沒有異常代碼呢? – Trinity

+0

@Archangel我寫了一個例子。 TryParse方法不會拋出任何異常。如果你的'variable'是一個有效的'int'或'double',它們返回'true'或'false'。 –

-1

試試這個。

Console.WriteLine("Enter Something From Keybord"); 
     var variable = Console.ReadLine(); 

     switch (variable.GetType()) 
     { 
      case typeof(int): 
         variable += 1; 
         Console.WriteLine(variable); 
       break; 
      case typeof(string): 
         variable +="*"; 
         Console.WriteLine(variable); 
         break; 
      case typeof(double): 
         variable += 1; 
         Console.WriteLine(variable); 
         break; 
      default: 
       break; 
     } 
+3

-1:ReadLine總是返回一個字符串。 – RvdK