.NET Framework中的错误String.Remove(char)方法?

时间:2013-02-13 13:32:04

标签: c# .net string overloading

("hello").Remove('e');

所以String.Remove有很多重载,其中一个是:String.Remove(int startIndex)

不知何故,我写的'e'字符被转换为int,并调用了WRONG重载函数。这是完全出乎意料的事情。我是否必须忍受这种情况,或者是否有可能提交错误,以便在下一版本的(神圣).NET框架中得到纠正?

6 个答案:

答案 0 :(得分:8)

String.Remove精确 2 重载,两者都以int作为第一个参数。

我相信你正在寻找String.Replace,如

string newString = "hello".Replace("e", string.Empty);

答案 1 :(得分:5)

没有Remove方法需要char ...

http://msdn.microsoft.com/en-us/library/143t8z3d.aspx

但是,char可以隐式强制转换为int,所以在你的情况下它是。{但它实际上不会删除字母e,而是删除索引(int)'e'处的字符(在您的情况下,它将在运行时超出范围)。

如果您要“删除”字母e,则:

var newString = "Hello".Replace("e", "");

我预测未来可能存在字符串的不变性。祝你好运; - )

答案 2 :(得分:4)

请查看方法的intellisense:它是:

    //
    // Summary:
    //     Returns a new string in which all the characters in the current instance,
    //     beginning at a specified position and continuing through the last position,
    //     have been deleted.
    //
    // Parameters:
    //   startIndex:
    //     The zero-based position to begin deleting characters.
    //
    // Returns:
    //     A new string that is equivalent to this string except for the removed characters.
    //
    // Exceptions:
    //   System.ArgumentOutOfRangeException:
    //     startIndex is less than zero.-or- startIndex specifies a position that is
    //     not within this string.
    public string Remove(int startIndex);

它做了它所说的;它只是你想要的方法。你想要的是:

string s = "hello".Replace("e","");

答案 3 :(得分:2)

Remove使用整数作为参数,而不是char。 'e'作为int变成了101。

答案 4 :(得分:2)

你的问题是什么?

由于没有以char为参数的重载,您不能指望以这种方式删除'e'

只需使用string.Replace(string, string)

答案 5 :(得分:1)

string.Remove()只有2个重载,其中一个接受一个int参数(并且没有一个接受char参数)。

Chars可以轻易转换为整数。

因此调用string.Remove(int)。

不是错误。 :)