string b = "opqrst";
  string sHead = "112233";
  sHead.Insert(sHead.LastIndexOf("22"), b);
  MessageBox.Show(sHead);
我这样写,运行后的结果是112233而不是1122opqrst33,为什么?

解决方案 »

  1.   

    MessageBox.Show(sHead.Insert(sHead.LastIndexOf("22"), b));那个是返回值被改为插入了的值,不会改变sHead本身
      

  2.   

    你怎么没有看我的答复呀,这是.net处理字符串的一个特殊之处。
    在.net中所有string的变量都是不能修改的,如果遇到修改,原变量的值保持不变,.net会自动生成一个新的string变量来保存新的值,所以你需要这样才可以:string newsHead=sHead.Insert(sHead.LastIndexOf("22"), b);
      MessageBox.Show(newsHead);
      

  3.   

    话说.....微软对string作了一些手脚。使它虽然是引用类型,但却具有参数类型的一些性质
      

  4.   

    string b = "opqrst";
      string sHead = "112233";
     sHead= sHead.Insert(sHead.LastIndexOf("22"), b);
      

  5.   

    提供微软string.cs下载.http://qq497525725.download.csdn.net/
      

  6.   

    Insert() return is string  ,not void