2

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

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

4

2 回答 2

13

你不能yield return nothing。如果它是空格,解决方案是不产生返回。注释掉那行,你应该很好。

''是没有意义的。编译器会抱怨。没有所谓的“没有性格”。

于 2013-04-03T13:33:05.663 回答
2
  1. ''是没有意义的。没有“无字符”的概念——有nul字符,但与“无字符”不一样。将此与字符串进行比较,字符串可以是空引用(对字符串)或零长度字符串。

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

于 2013-04-03T13:35:31.203 回答