问题描述
这是.cs文件在Mono中可以正常运行:
This is the .cs file runs fine in Mono:
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文件,该文件工作正常.然后,选择运行">不调试开始",这些错误会在显示面板中弹出:
I opened this Test.cs file in Xamarin, which worked properly. Then I choose 'Run' > 'Start Without Debugging' and these errors pop up in the display panel:
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
我不确定这是什么问题.可能与这条线有关吗?
I am not sure what the problem here is. Could it be to do with this line?
int UserNumber = int.Parse(Console.ReadLine());
推荐答案
读取堆栈跟踪,它表示Parse方法已传递了null参数,但不能为null.尝试拆分读取行并进行解析,然后确保该行不为null或为空.
Read the stack trace, it says the method of Parse was passed a parameter of null, but it cannot be null. Try splitting the read line and the parsing, and then making sure the line is not null or empty.
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);
}
}
像这样拆分代码,使其更易于阅读和调试.
Splitting up code like this makes it easier to read and easier to debug.
这篇关于如何在int.Parse中修复此ArgumentNullException?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!