2013-07-27 33 views
0

将字符串插入到字符串中似乎没有任何效果。我使用下面的代码:字符串插入不会产生任何效果

string stNum = string.Format("{0:00}", iValue); 
DesiredCode.Insert(0, stNum); 
txtCode.Text = DesiredCode; 

断点显示stNum具有所期望的价值,DesiredCode也如我们所插入之前预期。 但插入后,什么都不会发生,DesiredCode和以前一样!

有人请指出我正确的方向,我做错了什么?

+0

谢谢大家,有一个愚蠢的错误,我认为它是类似的一些静态扩展,但我应该返回它自己。 – LastBye

+0

我给人们回答了一些+1,得到了一些-1:D,无论如何,所有的答案似乎都是正确的,相同的,我立即得到了答案,Jon更具说明性。 – LastBye

+1

这可能是因为你写了你的问题。在我理解你想说的内容之前,我不得不阅读一些部分。 – aevitas

回答

7

字符串是不可变的。 所有的方法,如ReplaceInsert回报字符串,它是操作的结果,而不是在现有字符串改变数据。所以,你可能想:

txtCode.Text = DesiredCode.Insert(0, stNum); 

或整个块,使用,而不是使用string.Format直接ToString格式:

txtCode.Text = DesiredCode.Insert(0, iValue.ToString("00")); 

或者更清楚,在我看来,是使用字​​符串连接:

txtCode.Text = iValue.ToString("00") + DesiredCode; 

注意的是,这些没有将改变DesiredCode值。如果你想这样做,你需要重新分配给它,例如

DesiredCode = iValue.ToString("00") + DesiredCode; 
txtCode.Text = DesiredCode; 
+0

它是否清楚说明方法Replace,Insert等是*函数*? –

+0

感谢Jon,SO在几分钟之前不允许我接受。 – LastBye

3

字符串是immutable

DesiredCode = DesiredCode.Insert(0, stNum); 
2

Strings are immutable in C#。这意味着您需要在操作后将String.Insert的返回值分配给string变量以访问它。

string stNum = string.Format("{0:00}", iValue); 
DesiredCode = DesiredCode.Insert(0, stNum); 
txtCode.Text = DesiredCode; 
相关问题