我正在尝试将令牌列表转换为字符串列表。
这是我的班级代币:
internal class Token
{
private TokenType Type { get; set; }
private string Value { get; set; }
private int Index { get; set; }
public enum TokenType
{
Verb,
Word,
Adjective
}
public IEnumerable<Token> Tokenizer(string source)
{
var token = source.Split().ToList();
return token;
}
}
我想做的是将源字符串拆分为字符串列表,然后使用该列表为我的解析器做其他很酷的事情......
当我添加这行代码时,它会告诉我“无法从List<string>
转换为IEnumerable<Token>
。我该如何转换它?
var token = source.Split().ToList();
答案 0 :(得分:2)
错误消息的含义正是它所说的。
public IEnumerable<Token> Tokenizer(string source)
返回类型IEnumerable<Token>
,但
var token = source.Split().ToList();
的类型为List<string>
。 List<string>
和List<Token>
之间没有转化(或者就此而言,string
和Token
之间没有转化。
您需要执行以下操作:
var token = source.Split().Select(item => new Token(item)).ToList();
您还需要编写一个采用string
类型的构造函数,并使用它初始化Token
。
您也可以考虑使用Tokenizer
方法static
,这样您就不需要使用现有的Token
实例来使用它。