2015-07-28 101 views
1

这是cs文件中单运行良好:我该如何解决这个ArgumentNullException?

using System; 

public class HelloWorld 
{ 
    static public void Main() 
    { 
    Console.WriteLine("Enter a number"); 

    int UserNumber = int.Parse(Console.ReadLine()); 

    Console.WriteLine("Your number is: " + UserNumber); 
    } 
} 

我开了Xamarin这个test.cs中的文件,它工作正常。那么,我选择“运行”>“开始不调试”和这些错误的显示面板弹出:

Enter a number 

Unhandled Exception: 
System.ArgumentNullException: Argument cannot be null. 
Parameter name: String 
    at System.Number.StringToNumber (System.String str, NumberStyles options, System.NumberBuffer& number, System.Globalization.NumberFormatInfo info, Boolean parseDecimal) [0x00054] in /private/tmp/source-mono-mac-4.0.0-branch-c5sr2/bockbuild-mono-4.0.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.0.2/external/referencesource/mscorlib/system/number.cs:1084 
    at System.Number.ParseInt32 (System.String s, NumberStyles style, System.Globalization.NumberFormatInfo info) [0x00014] in /private/tmp/source-mono-mac-4.0.0-branch-c5sr2/bockbuild-mono-4.0.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.0.2/external/referencesource/mscorlib/system/number.cs:755 
    at System.Int32.Parse (System.String s) [0x00000] in /private/tmp/source-mono-mac-4.0.0-branch-c5sr2/bockbuild-mono-4.0.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.0.2/external/referencesource/mscorlib/system/int32.cs:140 
    at HelloWorld.Main() [0x0000b] in /Users/Yardenbourg/Desktop/Test.cs:9 
[ERROR] FATAL UNHANDLED EXCEPTION: System.ArgumentNullException: Argument cannot be null. 
Parameter name: String 
    at System.Number.StringToNumber (System.String str, NumberStyles options, System.NumberBuffer& number, System.Globalization.NumberFormatInfo info, Boolean parseDecimal) [0x00054] in /private/tmp/source-mono-mac-4.0.0-branch-c5sr2/bockbuild-mono-4.0.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.0.2/external/referencesource/mscorlib/system/number.cs:1084 
    at System.Number.ParseInt32 (System.String s, NumberStyles style, System.Globalization.NumberFormatInfo info) [0x00014] in /private/tmp/source-mono-mac-4.0.0-branch-c5sr2/bockbuild-mono-4.0.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.0.2/external/referencesource/mscorlib/system/number.cs:755 
    at System.Int32.Parse (System.String s) [0x00000] in /private/tmp/source-mono-mac-4.0.0-branch-c5sr2/bockbuild-mono-4.0.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.0.2/external/referencesource/mscorlib/system/int32.cs:140 
    at HelloWorld.Main() [0x0000b] in /Users/Yardenbourg/Desktop/Test.cs:9 
The application was terminated by a signal: SIGHUP 

我不知道这里的问题是什么。这可能与这条线有关吗?

int UserNumber = int.Parse(Console.ReadLine()); 
+1

使这个问题具体。例如。有一条声明读为:如果我们知道错误是什么,那么我们可以提供帮助。 – Richard

+2

“只要我尝试将ReadLine或if/else放在那里,它就会出现一堆错误,并且不会编译。”什么错误?您在Xamarin Studio中创建了哪些项目类型?基本上没有足够的信息来帮助你... –

回答

0

读取堆栈跟踪,它表示Parse的方法传递了一个null参数,但它不能为null。尝试分割读取行和解析,然后确保该行不为空或为空。

public class HelloWorld 
{ 
    static public void Main() 
    { 
    Console.WriteLine("Enter a number"); 
    String input = Console.ReadLine(); 
    int UserNumber = 0; 
    if(input != null && input != "") 
    { 
     UserNumber = int.Parse(input); 
    } 

    Console.WriteLine("Your number is: " + UserNumber); 
    } 
} 

拆分这样的代码可以更容易阅读并且更易于调试。

0

我敢打赌,您正在使用C# -> Mac -> Xamarin.Mac项目。默认情况下,这些程序不使用交互式控制台,当您拨打Console.ReadLine()时,您正在尝试使用交互式控制台。

尝试创建一个新的解决方案;而是选择C# -> Console Project以使交互式控制台正常工作。

+0

我看不到C#> Console Project的选项。这是我必须单独下载的东西吗? –

+0

@JaidynBelbin为什么你甚至想要在Xamarin应用程序中使用交互式控制台?移动设备没有控制台... – durron597

+0

在这个阶段,我不是为移动设备编写的。在大学学习这门语言的过程中,我还处于初级阶段,我需要一个可以运行一个简单程序并查看结果的环境。 –