C#定义数组时,用指定长度吗?
我在一个类中,做了个方法,判断字符串内容方面的,希望返回某几个字符串,我定义如下
- C# code
public bool isSpecialCharExist(String testStr, out String [] resultValue) { //resultValue =new string[]{"",""};一般是返回两个字符串,所以可以给两个空串,然后下面引用的时候就没有问题 resultValue = new string[] { };//这样不好用,提示下标超界 String myStrForSpecial = testStr; int flagSpecial = myStrForSpecial.IndexOf("G"); if (flagHdUnit != -1) { resultValue [0] = myStrForHdUnit.Substring(0,myStrForHdUnit.IndexOf("H"));//这样引用,会提示下标超界,但是,如果上面给数组 resultValue赋两个"","",就不提示。 resultValue [1] = myStrForHdUnit.Substring(myStrForHdUnit.IndexOf("H"));//这样引用,会提示下标超界,但是,如果上面给数组 resultValue赋两个"","",就不提示。 return true; } else { return false; } }
我在其它需要判断的地方,使用这个类的方法,
定义的时候,并没有指定长度,但是却可以正常运行
- C# code
SpecialCharExist mySCE = new SpecialCharExist(); String [] myRes =new string[]{}; bool flagEC = mySCE.isSpecialCharExist(myNeedTestStr, out myRes); if (flagEC == true) { //执行操作; }
求解,这是什么原因呢?
[解决办法]
数组要么指定长度,要么给出初始化集合,相当于隐式提供长度。
最好使用List<string>,你可以不断添加元素,最后再ToArray()
类似这样:
- C# code
var list = new List<string>();list.Add("item 1");list.Add("item 2");string[] result = list.ToArray();
[解决办法]
数组也是要指定的
[解决办法]
LZ你那样是隐式指定了长度了,编译器可以通过你{}中的内容推断出长度
[解决办法]
数组必须要指定长度
用泛型方式可以不指定长度 List<int> ls = new List<int>;
[解决办法]