【发布时间】:2015-11-10 20:54:48
【问题描述】:
我已经创建了这个类:
class Riconoscimento
{
private List<Word> words = new List<Word>();
public List<Word> GetList()
{
return words;
}
public void loadWords()
{
string[] lines = File.ReadAllLines(Environment.CurrentDirectory + "/../../words.txt");
foreach (string line in lines)
{
// skip commentblocks and empty lines..
if (line.StartsWith("--") || line == String.Empty) continue;
// split the line
var parts = line.Split(new char[] { '|' });
// add commandItem to the list for later lookup or execution
words.Add(new Word() { Text = parts[0], AttachedText = parts[1], IsShellCommand = (parts[2]) });
}
}
}
但是在加载 loadWords() 之后,当我尝试从我的 MainForm 中的类中获取单词时
public void engine_WordsRecognized(object sender, SpeechRecognizedEventArgs e)
{
Riconoscimento _riconoscimento = new Riconoscimento();
List<Word> words = _riconoscimento.GetList();
var cmd = words.Where(c => c.Text == e.Result.Text).First();
}
出现此错误: System.InvalidOperationException - 序列不包含元素。
就像它无法从课堂上检索单词一样,我不明白为什么。 如果我不使用该类,但将所有内容都放在我的主代码中,它就可以工作。 我该怎么办?
问题已解决:我将 loadWords() 加载到我的另一个 void 中,我必须将它加载到我的另一个 void 中。
【问题讨论】:
-
列表为空。在
loadWords()中设置断点并确保您的文字正在加载。 -
我知道它是空的,但我不知道为什么。如果我在我的 mainForm 而不是类中使用这个 loadWords,同时还在我的主窗体中创建 List 它可以工作。
-
在您的 engine_WordsRecognized 中,您正在创建一个新的(本地)Riconoscimento 实例并调用 GetList(),而不对其调用 loadWords:它的内部单词列表仍然是空的
标签: c# list class ienumerable