private string[] test(int [] s)
{
string [s.Length-1] al;
for(int i=0;i<s.Length-1;i++)
{
al[i] = (Convert.ToString(s[i]));
}
return al;
}
老提示试用了未赋值的局部变量al
请问要怎么写啊?
{
string [s.Length-1] al;
for(int i=0;i<s.Length-1;i++)
{
al[i] = (Convert.ToString(s[i]));
}
return al;
}
老提示试用了未赋值的局部变量al
请问要怎么写啊?
重新new一下然后再return al;
{
string [] al; if (s.Length == 0)
{
return null;
}
al = new string[s.Length];
for (int i = 0; i < s.Length; i++)
{
al[i] = s[i].ToString();
} return al;
}
private void test(int [] s,string [] al)
{
al = new string[s.Length];
for (int i = 0; i < s.Length; i++)
{
al[i] = s[i].ToString();
}
}调用:
int[] s = new int[]{1,2,3,4};
string[] al;
test(s,al);
string[] b = Array.ConvertAll<int, string>(a,
new Converter<int, string>(Convert.ToString));
按着你写的该改成
private string[] test(int[] s)
{
string[] al=new string[s.Length];
for(int i=0;i<s.Length;i++)
{
al[i]=Convert.ToString(s[i]);
}
return al;
}
1、string [s.Length-1] al;是错误的语句
2、string[]的长度该是s.Length,而不是s.Length-1,循环的时候也是
Oh,my god!how nice fault!
{
string arr = new string[ s.Length ];
for ( int i = 0; i < arr.Length; i ++ )
arr[i] = s[i].ToString();
return arr;
}挑刺的泛型委托木试,看起来是对的。
首先下面这个不知道是C++还是C#:private string[] test(int [] s)//如果是C++,此处语法错误,private后面没有:
{
string [s.Length-1] al;//如果是C#,此处语法错误,数组类型声明的[]里面不能有任何东西。
for(int i=0;i<s.Length-1;i++)
{
al[i] = (Convert.ToString(s[i]));
}
return al;
}
老提示试用了未赋值的局部变量al
请问要怎么写啊?
他的编译器竟然没提示语法错误,真是奇怪!
继续,第二个:string[] al = new string [s.Length-1];//很明显这是C#,可是不应该-1第三个:string[] al=new string[s.Length-1];C++新手也常犯这种错误,没有在堆上分配内存,return al;时al已经被销毁================================================================拜托,Array是引用类型
古道热肠的其实没大问题,但是细节上有些稍显不足的地方:private string[] test(int [] s)
{
string [] al; if (s.Length == 0)//应该返回空数组,这样更容易理解,因为后面可能会直接foreach。
{
return null;
}
al = new string[s.Length];
for (int i = 0; i < s.Length; i++)
{
al[i] = s[i].ToString();
} return al;
}private void test(int [] s,string [] al)
{
al = new string[s.Length];//这个就有些离谱了,没有out关键字,这个al是局部变量。
for (int i = 0; i < s.Length; i++)
{
al[i] = s[i].ToString();
}
}
private void test(int [] s,out string [] al)
{
al = new string[s.Length];
for (int i = 0; i < s.Length; i++)
{
al[i] = s[i].ToString();
}
}调用:
int[] s = new int[]{1,2,3,4};
string[] al;
test(s,out al);
{
string[] al = new string[s.Length];
for(int i=0;i<s.Length;i++)
{
al[i] = (Convert.ToString(s[i]));
}
return al;
}
//有问题?谁说有问题?
{
string[] array = new string[arr.Length];
for(int i=0;i<arr.Length;i++)
{
array[i]=arr[i].ToString();
}
return array;
}====CSDN 小助手 V2.5 2005年11月05日发布====
CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
下载:http://szlawbook.com/csdnv2
哪有这么声明的呀
{
return null;
}应当这样xie:if(s == null) return null;
if(s.Length == 0) return new string[0]; // 这行也可以不要,因为下面循环也处理了
{
//...
}上面已详述。这是函数封装习惯的问题。你也许会说,不可能有谁这么傻会new string[0]。但是如果那是从数据库中取出的数据或者前台输入的数据呢?
=====================================================================这是很危险的错误。也许在95%的调试中不会出问题。当你Release了之后,忽然遇到空数组。客户看到一个为将对象引用设置到对象实例的莫名其妙的话,作何感想?越是小概率事件,越值得重视。因为,他们很难测试出来。