苏飞论坛
标题:
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
string[] data1=null;
string[] data2=null;
string[] data3=null;
if (Info(ref data1, ref data2, ref data3))
{
textBox1.Text = data1[1].ToString();
}
复制代码
作者:
守望幸福
时间:
2012-12-23 22:26
童鞋,ref要求你在传参前必须已经初始化了的(out则不需要,但out在调用的方法中必须初始化,这是两者的区别)
观你的代码,你在
string[] data1;//使用ref此处及以下两处都必须初始化即 string[] data1=new string[5];
string[] data2;
string[] data3;
if (Info(ref strImg, ref strLink, ref strLinAlt))
{
textBox1.Text = data1[1].ToString();
}
复制代码
作者:
守望幸福
时间:
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