日期:2014-05-18  浏览次数:20977 次

关于局部变量问题
高手请问一个问题
我定义了一个类:
  public class CSum
{
public CSum()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public int ss(int a,int b)
{
return(a+b);
}
}
在Form1中有一文本框,一个Button按钮
  private void button1_Click(object sender, System.EventArgs e)
{
CSum C1;
if(C1==null)
{
C1=new CSum();
textBox1.Text=C1.ss(2,3).ToString();
}
}
一运行时就出现一个“出现生成错误。是否继续”对话框,之后指出的错误是:使用了未赋值的局部变量C1
现问一下:是不上在C#中使用变量前都要先初始化?

------解决方案--------------------
我还,C1是CSum类的一个实例,要new一下才能用啊
CSum C1;
C1 = new CSum();
if(C1 == null )
...
------解决方案--------------------
声明为字段即可有初值,局部变量是不会自动赋初值的
C# code
private CSum C1;
private void button1_Click(object sender, EventArgs e)
{
    if (C1 == null)
    {
        C1 = new CSum();
        textBox1.Text = C1.ss(2, 3).ToString();
    } 
}

------解决方案--------------------
不好意思,没看到楼主在if语句中用到了new
看看下面其他朋友的答复了。
------解决方案--------------------
你这样编译能过?
CSum C1;
变成 CSum C1=null;
------解决方案--------------------
这是编译器的问题,给变量默认值是个好习惯。
在以前c++里面,你的代码可以,但是CSum C1; C1会是一个随即值,.net加强了check,所以编译不让过。