尝试向数组添加值时出现 NullReferenceException
Getting NullReferenceException when trying to add a value to an array
我在使用这段代码时遇到问题。
每次运行时,它 returns 我 'System.NullReferenceException'.
// Clear out the Array of code words
wordBuffer = null;
Int32 syntaxCount = 0;
// Create the regular expression object to match against the string
Regex defaultRegex = new Regex(@"\w+|[^A-Za-z0-9_ \f\t\v]",
RegexOptions.IgnoreCase | RegexOptions.Singleline);
Match wordMatch;
// Loop through the string and continue to record
// words and symbols and their corresponding positions and lengths
for (wordMatch = defaultRegex.Match(s); wordMatch.Success; wordMatch = wordMatch.NextMatch())
{
var word = new Object[3] { wordMatch.Value, wordMatch.Index, wordMatch.Length };
wordBuffer[syntaxCount] = word;
Debug.WriteLine("Found = " + word[0]);
syntaxCount++;
}
// return the number of symbols and words
return syntaxCount;
异常发生在这些行:
Debug.WriteLine("Found = " + word[0]);
syntaxCount++;
特别是在尝试获取 word[0]
值时,在第二行带有 syntaxCount
,但是这些值的 none 为空,如图所示以下:
变量"s"只是RichEditBox的一行,word[0]有值,为什么会返回NullReferenceException? syntaxCount 也有一个值:/
您在 wordBuffer[syntaxCount] = word;
行收到异常
您使用错误的方法存储结果。数组不会自动创建,也不会自动增长。即,您需要使用 string[] arr = new string[size]
预先定义它们的大小。请改用列表,因为您事先不知道此处的大小。列表自动增长:
// Initialize with
var wordBuffer = new List<string>();
// ...
// And then add a word to the list with
wordBuffer.Add(word);
您使用 wordBuffer.Count
查询条目的数量,并且您可以在数组中访问这些项目,一旦它们被添加:wordBuffer[i]
,索引来自 0
至 wordBuffer.Count - 1
。这使得变量 syntaxCount
变得多余。
当然,您可以使用 foreach
.
遍历列表
我在使用这段代码时遇到问题。 每次运行时,它 returns 我 'System.NullReferenceException'.
// Clear out the Array of code words
wordBuffer = null;
Int32 syntaxCount = 0;
// Create the regular expression object to match against the string
Regex defaultRegex = new Regex(@"\w+|[^A-Za-z0-9_ \f\t\v]",
RegexOptions.IgnoreCase | RegexOptions.Singleline);
Match wordMatch;
// Loop through the string and continue to record
// words and symbols and their corresponding positions and lengths
for (wordMatch = defaultRegex.Match(s); wordMatch.Success; wordMatch = wordMatch.NextMatch())
{
var word = new Object[3] { wordMatch.Value, wordMatch.Index, wordMatch.Length };
wordBuffer[syntaxCount] = word;
Debug.WriteLine("Found = " + word[0]);
syntaxCount++;
}
// return the number of symbols and words
return syntaxCount;
异常发生在这些行:
Debug.WriteLine("Found = " + word[0]);
syntaxCount++;
特别是在尝试获取 word[0]
值时,在第二行带有 syntaxCount
,但是这些值的 none 为空,如图所示以下:
您在 wordBuffer[syntaxCount] = word;
您使用错误的方法存储结果。数组不会自动创建,也不会自动增长。即,您需要使用 string[] arr = new string[size]
预先定义它们的大小。请改用列表,因为您事先不知道此处的大小。列表自动增长:
// Initialize with
var wordBuffer = new List<string>();
// ...
// And then add a word to the list with
wordBuffer.Add(word);
您使用 wordBuffer.Count
查询条目的数量,并且您可以在数组中访问这些项目,一旦它们被添加:wordBuffer[i]
,索引来自 0
至 wordBuffer.Count - 1
。这使得变量 syntaxCount
变得多余。
当然,您可以使用 foreach
.