这有什么原因吗?我问这个问题是因为如果你需要使用大量的空字符,那么你就会陷入与你使用大量空字符串时相同的情况。

编辑:这种用法的原因是:

myString.Replace ('c', '')

所以从myString中移除所有的'c'实例。


当前回答

不能回答你的第一个问题-但对于你遇到的特定问题,你可以只使用字符串而不是字符,对吗?:

myString.Replace("c", "")

你为什么不想这么做?

其他回答

没有空char这样的东西。你能得到的最接近的是“\0”,Unicode“null”字符。既然你可以将它嵌入到字符串字面量中,或者很容易地表达它,为什么要为它设置一个单独的字段呢?同样,“很容易混淆”和“”参数不适用于“\0”。

如果你能给出一个例子,说明你想在哪里使用它,以及为什么你认为它会更好,这可能会有帮助……

如果你不需要整个字符串,你可以利用延迟执行:

public static class StringExtensions
{
    public static IEnumerable<char> RemoveChar(this IEnumerable<char> originalString, char removingChar)
    {
        return originalString.Where(@char => @char != removingChar);
    }
}

你甚至可以组合多个字符……

string veryLongText = "abcdefghijk...";

IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
            .RemoveChar('c')
            .RemoveChar('d')
            .Take(5);

... 并且只计算前7个字符:)

编辑:或者更好:

public static class StringExtensions
{
    public static IEnumerable<char> RemoveChars(this IEnumerable<char> originalString,
        params char[] removingChars)
    {
        return originalString.Except(removingChars);
    }
}

及其用法:

        var veryLongText = "abcdefghijk...";
        IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
            .RemoveChars('c', 'd')
            .Take(5)
            .ToArray(); //to prevent multiple execution of "RemoveChars"

使用

myString.Replace ("c", "")

你可以使用可空字符。

char? c

不能回答你的第一个问题-但对于你遇到的特定问题,你可以只使用字符串而不是字符,对吗?:

myString.Replace("c", "")

你为什么不想这么做?