日期:2014-05-19  浏览次数:20852 次

foreach的小问题
做了个小练习:  
              int[]   Ints   =   {   1,   2,   3   };
                StringBuilder   strShow   =   new   StringBuilder();
                string   strFinal;         //用于最后显示的
                foreach   (int   temp   in   Ints)
                {
                1.   //temp++;             //不能对temp赋值...
                        strShow.Append(temp);
                        strFinal   =   strShow.ToString();
                }
                2.   //TextBox1.Text   =   strFinal;         //使用了为赋值的变量strFinal...

--------------------------------------

其中1.2处分别报错,错误描述,如注释部分。请大家帮忙给解释下,谢谢啦~

------解决方案--------------------
1. foreach中的迭代变量是个只读变量(原因自己好好想想,涉及到装箱和拆箱)
2. string strFinal; 改成 string strFinal = string.Empty;

因为编译器可以认为你的foreach条件根本不成立,所以后面输出strFinal时没有赋值
------解决方案--------------------
foreach的语法问题,foreach中的temp是只读的,这个错误改后,第二个应该没问题了。
------解决方案--------------------
int[] Ints = { 1, 2, 3 };
StringBuilder strShow = new StringBuilder();
string strFinal= " "; //用于最后显示的
foreach (int temp in Ints)
{
strShow.Append(temp);
}
strFinal = strShow.ToString();//写在里面只会是3
TextBox1.Text = strFinal;


------解决方案--------------------
来迟了~~
楼主都解决问题了....
不过路过就留个脚印吧.....
------解决方案--------------------
是哦,来迟了.

------解决方案--------------------
进来学习学习
------解决方案--------------------
解决了!个人认为string strFinal=string.Empty;这样好一些,