Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回空字符文本_C#_Linq_Char_Yield Return - Fatal编程技术网

C# 返回空字符文本

C# 返回空字符文本,c#,linq,char,yield-return,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

我正在编写一个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;
            }
        }
}
公共静态IEnumerable ToPasswordFormat(此IEnumerable源代码)
{
var枚举器=source.GetEnumerator();
while(枚举数.MoveNext())
{
开关((字符)枚举器.Current)
{
案例“a”:
收益率“4”;
打破
案例“e”:
收益率“3”;
打破
案例“l”:
收益率‘7’;
打破
案例“i”:
收益率回报率“!”;
打破
案例“”:
收益率‘;
打破
违约:
产生返回(字符)枚举数.Current;
打破
}
}
}
正如您所看到的,我想删除空格,但当我使用
时,会返回“”它给我错误
空字符文本


什么是
,我怎样才能不返回任何内容?

您不能
不返回任何内容。解决方案是如果是空白,则产生收益。把那句话注释掉,你就应该很好了

毫无意义。编译器会抱怨的。没有“没有性格”这回事

  • 毫无意义。没有“无字符”的概念——有nul字符,但它与“无字符”不同。将其与字符串进行比较,字符串可以是空引用(字符串)或零长度字符串

  • 已经在@George Duckett对您的问题的评论中得到了回答:只需从
    '
    案例中删除
    收益


  • 不要放弃任何东西,继续你的while循环。i、 e.
    案例“”:中断
    您可以返回
    '\0'
    。与其使用巨大的
    开关
    ,我建议您只需构建一个
    字典
    来映射值;它会简单得多。+1关键是给定
    '1'、'2'、''、'3'
    您不需要像
    '1'、'2'、''、'3'
    这样的序列。你根本不想用任何东西来替换
    ,所以不要
    产生任何东西。
    没有“无字符”这样的东西。
    事实上是有的<代码>'\0'
    。“空字符”。也就是说,它不应该在这个上下文中使用。nul字符是一个有效字符。它有一个定义的值。它对许多编程语言都有特殊的意义,但它仍然是一个字符。“无字符”的存在方式与“无整数”的存在方式不同,尽管我们经常在零的时候说“无钱”:@nvoigt没有字符(或无整数)肯定存在。您只需将类型从
    char
    更改为
    char?
    @svick即使是可为空的char也始终有一个值。它只有一个额外的bool值,告诉您char的值对您有用还是只是随机垃圾。但是它有一个值,甚至是一个字符?不能有“无价值”。您可以对其进行测试,如果HasValue bool为false,则检查可空字符中字符的值。它仍然是一个有值的字符。