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

C#此作用域设计为什么要这样?
程序一
static   void   Main(string[]   args)
                {
                        int   i;
                        string   text;

                        for   (i   =   0,text= "p ";   i   <   10;   ++i)
                        {
                                text   =   "ggg "   +   Convert.ToString(i);
                                Console.WriteLine( "{0} ",   text);
                        }
                        Console.WriteLine( "lase   {0},{1} ",   text,i);
                        Console.ReadKey();
                }
程序二
static   void   Main(string[]   args)
                {
                        int   i;
                        string   text;

                        for   (i   =   0;   i   <   10;   ++i)
                        {
                                text   =   "ggg "   +   Convert.ToString(i);
                                Console.WriteLine( "{0} ",   text);
                        }
                        Console.WriteLine( "lase   {0},{1} ",   text,i);
                        Console.ReadKey();
                }

程序二编译不通过,显示“错误   CS0165:   使用了未赋值的局部变量“text”“
比较奇怪,C#问什么这样设计?有什么好处吗?
两个不同在于for(   )中程序一赋值了,而二没有。


------解决方案--------------------
int i;
string text = " ";

for (i = 0; i < 10; ++i)
{
text = "ggg " + Convert.ToString(i);
Console.WriteLine( "{0} ", text);
}
Console.WriteLine( "lase {0},{1} ", text, i);
Console.ReadKey();

------解决方案--------------------
程序二
static void Main(string[] args)
{
int i;
string text;

for (i = 0; i < 10; ++i)
{
text = "ggg " + Convert.ToString(i);
Console.WriteLine( "{0} ", text);