为什么中c# 不能写成 char[] str="hello";

c#中的语句char[]str="hello";通不过编译,为什么??我在C语言中经常写成:charmy[20]="hello";为什么C#不行?c#的string和ch... c# 中的语句 char[] str="hello";通不过编译,为什么??

我在C语言中经常写成:char my[20]="hello";

为什么C#不行?c#的string和char[]和byte[]有什么区别??
楼下的,你的代码通不过编译!!
char [] str = new char[20];
str = "hello";
展开
 我来答
sknix
2008-07-28 · 超过12用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:0
展开全部
因为C和C#是不同的语言,你总不会以为C#向下兼容C吧

在C语言中,语句 char my[20]="hello"; 之所以能被编译是因为C语言本身没有字符串这个概念,字符串"hello"被默认保存为一个char类型的数组,所以将一个数组"hello"赋给另一个数组my[20]当然没有问题

但是C#的体系截然不同。字符串和数组在C#中是两个概念,他们分别对应于System.String和System.Array两个类。虽然同为引用类型,但是并没有默认的“自动”类型转换函数。

也就是说,int可以赋值给char,因为有默认类型转换函数。但一个字符串不能直接赋值给一个数组,因为没有这样的转换函数。所以你的C#语句char[] str="hello";不能通过编译也是正常的。

解决的办法有几种。一种是给字符串加个大括号,即:
char[] str={"hello"};
这样str数组就包含了一个元素,这个元素的类型是字符串,值为"hello"。
使用Console.WriteLine{str[0]};语句就能打印出hello

还有一种是笨办法,即
char[] str = {'h', 'e', 'l', 'l', 'o'};
使用for或foreach打印

更好的代替方法就是上面所说的ToCharArray()方法,它返回一个包含字符串中一部分字符的Char[]。具体怎么用自己查MSDN。

当然你也可以自己写一个默认类型转换函数,让编译器能够自动将字符串保存在char数组中。不过与其这样费力的模拟C语言,倒不如试试新的数据结构String呢
花团锦簇ZE
2008-07-28 · TA获得超过799个赞
知道小有建树答主
回答量:889
采纳率:50%
帮助的人:178万
展开全部
你应该是C语言之后转过来学C#的吧

C语言可以动态申请大小,但是C#不可以 必须先实例化才可以使用、
所以你你如果想给str赋值首先要给str一个空间

char[] str=new char[5];
然后str="hello";
string[] 是字符串
baty[] 是字节
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Decrula
2008-07-28
知道答主
回答量:4
采纳率:0%
帮助的人:6475
展开全部
char[] str = { Convert.ToChar("hello") };
在C#中
1.你声明的str是数组,就算是一维的也要用大括号括起来。
2."hello"是string类型的,需要转换成char类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lcg1986
2008-07-28 · TA获得超过3374个赞
知道大有可为答主
回答量:1858
采纳率:90%
帮助的人:1600万
展开全部
C中char my[20]确定了分配的内存空间大小...
而你在C#中char []程序不知道应该为你的数组分配多大的内存空间.
你应该清楚的指定分配的大小:
char [] str = new char[20];
str = "hello";
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhyleo
2008-07-28 · TA获得超过301个赞
知道小有建树答主
回答量:542
采纳率:0%
帮助的人:0
展开全部
这样你还不如直接用string
要转换到char数组就用
ToCharArray()方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式