簡體   English   中英

C#字符串類:無法將字符推到字符串末尾?

[英]C# String class: No way of pushing a character to the end of the string?

真???

我已經搜索過https://msdn.microsoft.com/zh-cn/library/system.string(v=vs.110).aspx ,看不到任何可以將字符直接推到末尾的方法一個字符串。 我能想到的最好的是

mystr.Insert(mystr.Length, newchar.ToString()); 

由於將字符轉換為字符串並執行字符串連接會產生額外的開銷,因此這似乎沒有效率。 我的特定用例看起來像

while (eqtn[curidx] >= '0' && eqtn[curidx] <= '9') istr.Insert(istr.Length, eqtn[curidx++].ToString());

只是因為我想不出更好的方法。 有沒有更好的辦法?

.NET中的字符串是不可變的,因此您的代碼不會執行任何操作。 String上的每個方法都會創建一個新實例,它不會修改現有字符串。

String類會覆蓋+運算符,以創建一個新字符串,並在其末尾附加字符:

istr = istr + eqtn[curidx++];

如果您要執行許多此類操作,則使用StringBuilder會更加高效。 基本上是可變的String

您可以使用Append方法將字符添加到結尾。 准備好后,調用ToString以獲取構造的字符串。

是的,絕對正確:您不能將字符壓入string的末尾,因為C#字符串是不可變的 一旦有了對象,就將其值固定住,直到創建新的string對象。

另一方面,創建一個在結尾帶有額外字符的新字符串非常簡單:使用+運算符重載來執行串聯

string s = "abc";
s += '9'; // s becomes "abc9"

請注意,此解決方案不太適合在循環中使用,因為如果循環運行N次,則會在該過程中創建N個丟棄對象。 更好的解決方案是使用StringBuilder ,它在C#中提供可變的字符串。 StringBuilder類具有方便的Append方法,該方法將字符推到StringBuilder的末尾。 構建完字符串后,請調用ToString將結果作為不可變的string對象獲取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM