在自定义的类mymodule里有一个方法:
        public void a(RadioButton x, string y)
        {
            if (x.Checked == true)
            {
                y = "1";
            }
            else
            {
                y = "0";
            }
        }然后使用的时候:
ModuleClass.MyModule MyMC = new mhjg.ModuleClass.MyModule();string zd3;
string zd3;
MyMC.a(radioButton3, zd3);
总是报错“使用了未赋值的局部变量”后来改成:
string zd3="";
MyMC.a(radioButton3, zd3);
执行后发现无法赋值,zd3还是为空,怎么回事啊?(已确定radiobutton3被选中了)请指教,谢谢啦!!

解决方案 »

  1.   

    MyMC.a(radioButton3, ref zd3);方法里
     public void a(RadioButton x,ref string y)
      

  2.   

    public void a(RadioButton x,ref  string y)
      {
      if (x.Checked)//直接这么写就可以了
      {
      y = "1";
      }
      else
      {
      y = "0";
      }
      }
    ps:说实话,没必要定义这么一个方法
      

  3.   

    MyMC.a(radioButton3, out zd3);
      

  4.   

    那这么定义:
    public string a(bool b)
      {
      if (b)
      {
     return "1";
      }
      return "0";
      }
    用时
    string y=a(rbtn.Checked);
      

  5.   

    你这是什么啊!!要么用ref要么要用out标识是引用类型还是值类型才能得到值 啊!或者你把变量弄成
    static的静态的时刻都能更改他的值!!什么都不做,C#是不会理你的
      

  6.   

    C#中string类型为引用类型,但是表现却是值类型的性质。若要保留其修改后的值,需要使用参数修饰符ref
      

  7.   

    据说是给能改变传进来的参数值需要用ref或 out,但是偶只用过ref.管用!REF!
      

  8.   

    [Quote=引用 14 楼 iamagril 的回复:]
    引用 3 public void a(RadioButton x,ref string y)
    {
    if (x.Checked)//直接这么写就可以了
    {
    y = "1";
    }
    else
    {
    y = "0";
    }
    }