c# - 自学C#。不知道我需要修复哪里/什么(对象引用未设置为对象的实例。第 25 行)
问题描述
我不断收到标题错误。我在编码方面不是很有经验,也不擅长阅读和理解代码。
我也知道这将是一个简单的修复,但我仍然不知道我需要修复什么或在哪里修复。
using System;
using System.Linq;
namespace Day_6
{
class Program
{
static void Main(string[] args)
{
int numStrings = Convert.ToInt32(Console.ReadLine());
var str = "";
string[] words = new string[1000];
var even = new string[500];
var odd = new string[500];
for (int i = 0; i < numStrings; i++)
{
str = Console.ReadLine();
words.Append(str);
}
foreach (var word in words)
{
foreach (var letter in word)
{
if (word.IndexOf(letter)%2 != 0)
{
odd.Append(letter.ToString());
}
else
{
even.Append(letter.ToString());
}
}
Console.WriteLine(odd + " " + even);
}
}
}
}
任何帮助,即使它只是阅读材料,所以我可以理解为什么/什么/在哪里得到这个错误会很棒。
毕竟我正在努力学习!
非常感谢
解决方案
空引用错误的第一个实例是由您拥有的第 17 行引起的words.Append(str);
,将其替换为words[i] = str;
.
在此处阅读IEnumerable.Append()
方法的行为,因为它不会就地修改数组;它返回一个 new ,然后必须将其枚举到一个数组中。words
IEnumerable
所以这个语句words.Append(str);
实际上什么也没做;如果您希望使用该Append()
方法,则必须保存它的返回值并将结果枚举到一个数组中,如下所示:
words = words.Append(str).ToArray()
Main()
此外,在您的方法(第 9 行)的第 3 条语句中有第二个空引用错误,您有
string[] words = new string[1000];
如果您将其替换为:
string[] words = new string[numStrings];
您将消除foreach
循环遍历空元素的可能性。
推荐阅读
- python - 当你不能显式使用嵌套元组的索引时,如果你有元组的深度,如何引用一个值?
- google-apps-script - 将行从一个选项卡复制并删除到另一个选项卡
- reactjs - Redux Toolkit RTK 在 queryFn 中查询调用端点
- c# - 在哪里单击一次获取添加到应用程序文件夹中的文件?
- jenkins - 詹金斯管道在输出中暴露信用
- sql-server - SQL Server - 将 UTC 转换为 EST(适当时包括夏令时)
- scala - Scala/Spark 聚合函数中的 lit(0) 和 lit(1) 有什么作用?
- sql - 如何在 Presto 中将一行拆分为多列?
- salesforce - 执行 SOQL 操作的动态查询不起作用
- gpu - 你可以在没有任何库的情况下在 Google Colab 中使用 GPU 吗?