| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4934 人关注过本帖
标题:[求助]Array.Copy(string,char[],string.Length)
只看楼主 加入收藏
jingzhao22visa
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2006-8-10
收藏
 问题点数:0 回复次数:19 
[求助]Array.Copy(string,char[],string.Length)

string[] strSource=new string[2];
strSource[0]= "chanqwer";

strSource[0] = strSource[0].PadLeft(16);
char[] temp = new char[16];
Console.WriteLine(strSource[0]);

Console.WriteLine(strSource[0].Length);
Array.Copy(strSource, temp, 16);
Console.WriteLine(temp);

使用Array。Copy函数从string复制到char[] 字符串数组的时候,编译通过。但是运行的时候报错:
源数组长度不足。请检查 srcIndex 和长度以及数组的下限。
不知道为什么。


如果改成:
string strSource;
strSource="chanqwer";

strSource= strSource.PadLeft(16);
char[] temp = new char[16];
Console.WriteLine(strSource);

Console.WriteLine(strSource.Length);
Array.Copy(strSource, temp, 16);
Console.WriteLine(temp);

编译的时候出现:
错误 2 与“System.Array.Copy(System.Array, System.Array, int)”最匹配的重载方法具有一些无效参数 C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\waitone\waitone\Form1.cs 16 9 waitone
错误 3 参数“1”: 无法从“string”转换为“System.Array” C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\waitone\waitone\Form1.cs 16 20 waitone


请各位指点一下怎么回事。

搜索更多相关主题的帖子: string Array Length Copy char 
2006-08-25 10:32
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
你第二个问题
系统先把string转为System.Array以匹配“System.Array.Copy(System.Array, System.Array, int)”
当无法把string转换的时候参数就失效了 就会出现这个错误了

此号自封于2006年11月30日
2006-08-25 10:56
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
你第一个问题
你声明的是一个string数组 当你把第一个填充后是16位但是还有第二个就是string[1]怎么计算?
我估计系统处理的时候由于源数组和目标数组长度处理的时候出错导致的

此号自封于2006年11月30日
2006-08-25 11:00
jingzhao22visa
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2006-8-10
收藏
得分:0 
string strSource;
strSource="chanqwer";

strSource= strSource.PadLeft(16);
char[] temp = new char[16];
Console.WriteLine(strSource); Console.WriteLine(strSource.Length);
Array.Copy(strSource, temp, 16);
Console.WriteLine(temp);
即使我使用Array.Copy((System。Array)strSource,(System。Array) temp, 16);
来转换数组也不行,系统无法进行类型转换啊。
错误 2 无法将类型“string”转换为“System.Array” C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\waitone\waitone\Form1.cs 16 20 waitone


所以我才使用string[]类型数组。结果还是有问题。
那怎么办才可以运行呢?



2006-08-25 11:50
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
            string strSource;
            strSource="chanqwer";
        
            strSource= strSource.PadLeft(16);
            char[] temp = new char[16];
            Console.WriteLine(strSource);      
            Console.WriteLine(strSource.Length);     
            Array.Copy(strSource.ToCharArray (), temp, 16);
            Console.WriteLine(temp);

此号自封于2006年11月30日
2006-08-25 12:30
jingzhao22visa
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2006-8-10
收藏
得分:0 
Array.Copy(strSource.ToCharArray (), temp, 16);
可是如果这样字写的话,等于提前把 string的类型转换为char[] 数组了。
实际上也就不用再进行数组的转换了啊。

如果使用不同类型的数组之间进行copy呢?
比如 char 和 int型的?


2006-08-28 08:22
mylover624
Rank: 1
来 自:乖乖的心中
等 级:新手上路
帖 子:868
专家分:0
注 册:2006-7-6
收藏
得分:0 
一个一个强制转换吧.int.Parse("...."),转换成相同类型再Copy

一个天才顶不上十个笨蛋!
书山有路勤为径,学海无涯友相伴。
我的E-mail:mylover624@.cn
2006-08-28 08:31
jingzhao22visa
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2006-8-10
收藏
得分:0 
如果那样子的话估计是可行的,但是方法似乎比较麻烦。
而且,Array。copy的目的不就是在不同类型之间的数组之间复制吗?
那它岂不是没有起到应有的作用?

如果拷贝 string to char[],要使用 string。tochararray实际上string已经变成char[]的数组了,也就不需要array。copy的功用了。

如果 转换int[] 到 char[] 使用一个一个的强制转换,要使元素比较多呢?

2006-08-28 08:50
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
楼主
请恕我直言啊
我始终没弄明白你的意思......
为何一定要舍近求远呢

此号自封于2006年11月30日
2006-08-28 09:40
jingzhao22visa
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2006-8-10
收藏
得分:0 
无语.....

我的意思是想弄清楚Array.copy的功能,以后有机会可以用.
象上述所说的"

Array.Copy(strSource.ToCharArray (), temp, 16);

实际上就是把strSource.已经转换为char[]数组了,然后进行char[]数组之间的复制,这样我觉得就可以直接 char[] c1=char[] c2;了,不需要用array.copy函数.它也就没有起到应有的作用.(我认为的作用是可以通过某种方式让 string 的类型直接被拷贝到char[]中间去.)

""
强制转换的话,应该可以实现int[]到char[]的转换,但是同样没有用到array.copy的功能.


我只是想好好使用array.copy功能.因为 不是很了解,想看看是否可以实现这样字的转换.


汗 ....
可能我没有表达清楚,或者是这个问题比较.....
因为有 string.tochararray()的函数,实际上暂时是不需要用到array.copy的.


汗....

无论如何,感谢各位的帮助.如果万一有直接拷贝的方法,请一定贴出来.

Thanks very much....



2006-08-28 10:46
快速回复:[求助]Array.Copy(string,char[],string.Length)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017344 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved