[CODE]            //取得字符串
            string temp = this.textBox3.Text.Trim();
            //声明缓存
            StringBuilder sb = new StringBuilder();
            //声明种子
            char c;
            for (int i = 0; i < temp.Length;i++ )
            {
                //取得种子
                c = temp[i];
                //保存种子
                sb.Append(c);
                //声明索引
                int idx = temp.IndexOf(c);
                while (idx > -1)
                {
                    //删除重复字符
                    temp = temp.Remove(idx, 1);
                    //检索索引
                    idx = temp.IndexOf(c);
                }
            }
            //还原字符
            this.textBox3.Text = sb.ToString();[/CODE]
在做这个题时候发现了一个问题
首先说一下我的思路:
1:我的出发点是检索到一个种子,保存这个种子,马上就删除重复种子的字符。
2:生成新的字符串。
3:重复1。
刚开始我用foreach循环的
foreach(char c in temp)
{
    //省略若干;
}
问题:第2步执行完毕执行第三步的时候,循环检索并非是从新生成的字符串里检索,而是按照最初的字符串运行。
比如"haha"执行到第三步的时候字符串temp应该是"aa"
但是foreach检索的时候仍然是"haha",达不到预期的效果
由此看出在执行foreach的时候framework自己建立了自己的数据字典。
当我们在处理变化的变量的时候还是要用到for循环。
[此贴子已经被作者于2007-7-10 10:14:56编辑过]