苏飞论坛

标题: ref out的问题。 [打印本页]

作者: hoo_eagle    时间: 2012-12-8 12:01
标题: ref out的问题。
方法如下:

public static bool Info( ref string[] str1, ref string[] str2 , ref string[] str3)
        {
            try
            {
                str1= new string[3];
                str2= new string[3];
                str3= new string[3];

                    int i = 0;
                    for(int i=0;i<3;i++)
                    {

                            str1[i] = (i+1).ToString();
                            str2[i] =( i*1).ToString();
                            str3[i]=(i+5).ToString();
                        }



                return true;
            }
            catch {

                return false; }
        }



调用:

            string[] data1;
            string[] data2;
            string[] data3;
            if (Info(ref strImg, ref strLink, ref strLinAlt))
            {
                textBox1.Text = data1[1].ToString();
            }
为什么提示  “使用了未赋值的局部变量data1,data2,data3”?

麻烦讲一下同时返回几个数组的值,如何写更好。ref和out的这种数组传递中的应用。谢谢。



作者: 站长苏飞    时间: 2012-12-8 12:06
strImg  strLink  strLinAlt 这三个值里来的?
   string[] data1;
            string[] data2;
            string[] data3;
你这三个数组是没有赋值就使用了啊肯定出错啊,


作者: 站长苏飞    时间: 2012-12-8 12:06
应该是这样写吧
[code=csharp]string[] data1;
            string[] data2;
            string[] data3;
            if (Info(ref data1, ref data2, ref data3))
            {
                textBox1.Text = data1[1].ToString();
            }
[/code]
作者: hoo_eagle    时间: 2012-12-8 13:34
哦。也是同样的错误呀。
作者: 站长苏飞    时间: 2012-12-8 14:34
完整代码发上来看看
作者: kunkun0921    时间: 2012-12-19 17:06
  1. string[] data1=null;
  2.             string[] data2=null;
  3.             string[] data3=null;
  4.             if (Info(ref data1, ref data2, ref data3))
  5.             {
  6.                 textBox1.Text = data1[1].ToString();
  7.             }
复制代码

作者: 守望幸福    时间: 2012-12-23 22:26
童鞋,ref要求你在传参前必须已经初始化了的(out则不需要,但out在调用的方法中必须初始化,这是两者的区别)
观你的代码,你在

  1.             string[] data1;//使用ref此处及以下两处都必须初始化即  string[] data1=new string[5];
  2.              string[] data2;
  3.              string[] data3;
  4.              if (Info(ref strImg, ref strLink, ref strLinAlt))
  5.              {
  6.                  textBox1.Text = data1[1].ToString();
  7.              }

复制代码

作者: 守望幸福    时间: 2012-12-23 22:29
本帖最后由 守望幸福 于 2012-12-23 22:42 编辑
admin 发表于 2012-12-8 14:34
完整代码发上来看看

出了个小问题,回复的时候使用的插入代码插件好像不起作用。我是自己打[co de][/co de],才用上的。
浏览器版本:360正式版5.0 版本号:5.0.9.5,
是否是偶然现象,在下次重启后验证。




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4