我刚刚开始学习c#,遇到的一个问题,大家看看,现在要求计算1加到100的值,我刚开始的代码是这样的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace @while
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 1,t;
            while (i < 101)
            {
               
                t+= i;
                i++;
            }
                Console.WriteLine(t);
            
            Console.ReadKey();
        }
    }
}
结果提示“错误 2 使用了未赋值的局部变量“t””
我把程序中刚刚开始定义的t赋值0后,就可以解决了,这是为什么啊,c语音里好像这样做的效果都是一样的啊,高手解释下啊~

解决方案 »

  1.   

    sum = 0;
    for (int i = 1; i <= 100; i++)
        sum += 100;
    Console.WriteLine(sum);
      

  2.   

    int i = 1,t;
    =>
    int i = 1, t = 0;
      

  3.   

    错误提示说明白很清楚.int i = 1,t;好像t赋个什么类型 string,还是int object 楼下的能说下吗。就像楼主那样不用会赋什么类型
      

  4.   

    C# 比 C 语言优秀的一点就是,当程序员使用不规范的写法写程序,可能造成隐患的时候,C# 编译器会自动阻止,从语法层面杜绝那些不好的编程习惯。使用变量前不初始化就是一个恶习。
      

  5.   

    C#中一切都是对象.而对象的抽象说法就是类, 类在使用的时候必须进行实例化(静态类和不能进行实例化的类除外.如抽象类).
    而int,string等都是类的别名.所以在使用它们的时候必须实例化.否则必然出错.
      

  6.   

    t 没有声明,直接加条 int t ;就好了
      

  7.   

    C里面写int t;默认为 t=0;
    C#里面没有默认值,任何变量使用前都必须初始化。
      

  8.   

      int i = 1,t = 0;
      

  9.   

    c和c#里面都是可以这样的只是在c#中编译器会给出的一个警告,是一个强制要求!为的是易读、减少错误!
      

  10.   

    C#里面的变量申明就是这样  你那个前一个声明并赋值  但是t你只声明没有复制  
    Int别名是System.Int32   他允许的范围是从负数到最大整数 
      

  11.   

    C#里局部变量是没有默认值勤的,所以声明t的时候一定要赋值。如果把t放到方法外就不用,因为类的成员在编译的时候会自妆始化为0.