2

文字列入力から p455w0rd を作成するために、Linq 拡張メソッドを作成しています。

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

yield return nothingとは何''ですか? どうすれば yield return nothing を返すことができますか?

4

2 に答える 2

13

できませんyield return nothing。解決策は、空白の場合は return を返さないことですその行をコメントアウトすると、うまくいくはずです。

''無意味です。コンパイラは文句を言います。「キャラがいない」なんてことはありません。

于 2013-04-03T13:33:05.663 に答える
2
  1. ''無意味です。「文字なし」という概念はありません。ヌル文字はありますが、「文字なし」とは異なります。これを、null 参照 (文字列への) または長さ 0 の文字列である可能性がある文字列と比較してください。

  2. @George Duckett による質問へのコメントで既に回答済み:ケースyieldから を削除するだけ' 'です。

于 2013-04-03T13:35:31.203 に答える