我正在编写Linq扩展方法,从字符串输入中创建p455w0rd。
public static IEnumerable<char> ToPasswordFormat(this IEnumerable<char> source)
{
var enumerator = source.GetEnumerator();
while (enumerator.MoveNext())
{
switch((char)enumerator.Current)
{
case 'a':
yield return '4';
break;
case 'e':
yield return '3';
break;
case 'l':
yield return '7';
break;
case 'i':
yield return '!';
break;
case ' ':
yield return '';
break;
default:
yield return (char)enumerator.Current;
break;
}
}
}
你可以看到我想删除空格,但是当我使用yield return '';
时,它会给我一个错误Empty character literal
。
什么是''
,我怎样才能返回收益率?
答案 0 :(得分:13)
你不能yield return nothing
。如果它是一个空格,解决方案是不收益率返回。注释掉那条线,你应该很好。
''
毫无意义。编译器会抱怨。没有“没有人物”这样的东西。
答案 1 :(得分:2)
''
毫无意义。没有&#34;没有角色的概念&#34; - 有nul字符,但它与&#34;没有字符&#34;不同。将此与字符串进行比较,字符串可以是空引用(对于字符串)或零长度字符串。
@George Duckett对您的问题的评论已经回答:只需从yield
案例中删除' '
。