2014-08-29 40 views
-3
Console.Write("Write a number: "); 

      try 
      { 
       int Number = Convert.ToInt32(Console.ReadLine()); 
      } 
      catch (OverflowException) 
      { 
       Console.WriteLine("Number to big"); 
      } 

      TellLastNumber(Number); 

它說'數字'在當前上下文中不存在。 如何使main()中無處不在的int數字?在上下文之外嘗試使用int

+2

瞭解[scope in C#](http://blogs.msdn.com/b/csharpfaq/archive/2004/08/12/how-to-keep-a-local-variable-in-scope-across -a-try-and-catch-block.aspx)(這個例子現在已經過時了,因爲我們有'使用'塊,但是原理就是這樣)。 – birryree 2014-08-29 20:28:25

回答

5

我該如何在main()中使用int'Number'?

只是移動變量Number的聲明的main()範圍,這將是從該點到函數結束。

 Console.Write("Write a number: "); 

     int Number = 0; 
     try 
     { 
      Number = Convert.ToInt32(Console.ReadLine()); 
     } 
     catch (OverflowException) 
     { 
      Console.WriteLine("Number to big"); 
     } 

     TellLastNumber(Number); 
3

爲了擺脫你必須定義Number外try塊併爲其分配一些默認值的誤差。

int Number = 0; 
try 
{ 
    int Number = Convert.ToInt32(Console.ReadLine()); 
} 
catch (OverflowException) 
{ 
    Console.WriteLine("Number to big"); 
} 

TellLastNumber(Number); 

更重要的是使用int.TryParse,不會引發異常,如果傳遞給它的數量不是一個int。

int Number; 
if (!int.TryParse(Console.ReadLine(), out Number)) 
{ 
    Console.WriteLine("Invalid number"); 
} 
TellLastNumber(Number); 

你所得到的錯誤,因爲編譯器看不到Numbertry範圍之外。

+0

+1用於將用戶指向具有適當MSDN鏈接的「int.TryParse」。 – Prix 2014-08-29 20:31:15

相關問題