yield返回空字符文字

时间:2013-04-03 13:30:22

标签: c# linq char yield-return

我正在编写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

什么是'',我怎样才能返回收益率?

2 个答案:

答案 0 :(得分:13)

你不能yield return nothing。如果它是一个空格,解决方案是收益率返回。注释掉那条线,你应该很好。

''毫无意义。编译器会抱怨。没有“没有人物”这样的东西。

答案 1 :(得分:2)

  1. ''毫无意义。没有&#34;没有角色的概念&#34; - 有nul字符,但它与&#34;没有字符&#34;不同。将此与字符串进行比较,字符串可以是空引用(对于字符串)或零长度字符串。

  2. @George Duckett对您的问题的评论已经回答:只需从yield案例中删除' '