![](/img/trans.png)
[英]How to Fix System.ArgumentNullException: Value cannot be null
[英]Can't find a fix for System.ArgumentNullException: Value cannot be null
我对编码真的很陌生,所以我不知道如何解决此错误:
$ mcs * .cs -out:main.exe $ mono main.exe插入第一个数字:
未处理的异常:System.ArgumentNullException:值不能为null。 参数名称:<902ab9e386384bec9c07fa19aa938869>中的System.Number.StringToNumber处的字符串(System.String str,System.Globalization.NumberStyles选项,System.Number + NumberBuffer&数字,System.Globalization.NumberFormatInfo信息,System.Boolean parseDecimal)[0x00003]:在System.Int32.Parse(System.String s)的<902ab9e386384bec9c07fa19aa938869>:0中的System.Number.ParseInt32(System.String s,System.Globalization.NumberStyles样式,System.Globalization.NumberFormatInfo信息)[0x00015] [0x00015] [0x00007 ]在<902ab9e386384bec9c07fa19aa938869>:0中,位于RectangleVolume.Program.Main()中的[0x0000f]在<0c8d91594f2e4f869d1e8405ed48fd66>:0中[ERROR]致命异常:System.ArgumentNullException:值不能为null。 参数名称:<902ab9e386384bec9c07fa19aa938869>中的System.Number.StringToNumber处的字符串(System.String str,System.Globalization.NumberStyles选项,System.Number + NumberBuffer&数字,System.Globalization.NumberFormatInfo信息,System.Boolean parseDecimal)[0x00003]:在System.Int32.Parse(System.String s)的<902ab9e386384bec9c07fa19aa938869>:0中的System.Number.ParseInt32(System.String s,System.Globalization.NumberStyles样式,System.Globalization.NumberFormatInfo信息)[0x00015] [0x00015] [0x00007 ]在<902ab9e386384bec9c07fa19aa938869>:0中的RectangleVolume.Program.Main()[0x0000f]在<0c8d91594f2e4f869d1e8405ed48fd66>:0中
这是代码:
using System;
namespace RectangleVolume
{
class Program
{
static void Main()
{
int number1;
int number2;
int volume;
int two;
int zero;
Console.Write("Insert the first number: ");
number1 = int.Parse(Console.ReadLine());
Console.Write("Insert the second number: ");
number2 = int.Parse(Console.ReadLine());
two = 2;
two = int.Parse(Console.ReadLine());
zero = 0;
zero = int.Parse(Console.ReadLine());
if (number1 < zero)
{
Console.WriteLine("First number is not a positive");
}
else
{
Console.WriteLine(number1 * two);
}
if (number2 < zero)
{
Console.WriteLine("second number is not a positive");
}
else
{
Console.WriteLine(number2 * two);
}
volume = number1 + number2;
Console.Write("The Volume is: ");
Console.WriteLine(volume);
Console.ReadLine();
}
}
}
如果有人知道如何解决错误,我们将不胜感激。
不要重复自己 :让我们提取一个方法 :
using System.Globalization;
...
private static int ReadNonNegative(string title) {
int result = 0;
while (true) do {
Console.Write($"Insert the {title} number: ");
if (!int.TryParse(Console.ReadLine(), out result)) {
Console.WriteLine();
Console.WriteLine("Syntax error. Not a valid integer value. Please, try again.");
}
else if (result < 0) {
Console.WriteLine();
Console.WriteLine($"{CultureInfo.CurrentCulture.TextInfo.ToTitleCase(title)} number must not be negative.");
}
else
return result;
}
}
然后我们可以轻松使用它
static void Main() {
int number1 = ReadNonNegative("first");
int number2 = ReadNonNegative("second");
Console.WriteLine($"{number1 * 2}");
Console.WriteLine($"{number2 * 2}");
int volume = number1 + number2;
Console.Write($"The Volume is: {volume}");
Console.ReadLine();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.