http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 5368|回复: 7

[综合] ref out的问题。

[复制链接]
发表于 2012-12-8 12:01:22 | 显示全部楼层 |阅读模式
方法如下:

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的这种数组传递中的应用。谢谢。




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2012-12-8 12:06:16 | 显示全部楼层
strImg  strLink  strLinAlt 这三个值里来的?
   string[] data1;
            string[] data2;
            string[] data3;
你这三个数组是没有赋值就使用了啊肯定出错啊,

发表于 2012-12-8 12:06:55 | 显示全部楼层
应该是这样写吧
[code=csharp]string[] data1;
            string[] data2;
            string[] data3;
            if (Info(ref data1, ref data2, ref data3))
            {
                textBox1.Text = data1[1].ToString();
            }
[/code]
 楼主| 发表于 2012-12-8 13:34:47 | 显示全部楼层
哦。也是同样的错误呀。
发表于 2012-12-8 14:34:18 | 显示全部楼层
完整代码发上来看看
发表于 2012-12-19 17:06:23 | 显示全部楼层
  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:06 | 显示全部楼层
童鞋,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:30 | 显示全部楼层
本帖最后由 守望幸福 于 2012-12-23 22:42 编辑
admin 发表于 2012-12-8 14:34
完整代码发上来看看

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

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-19 08:10

© 2014-2021

快速回复 返回顶部 返回列表