为什么中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"; 展开
我在C语言中经常写成:char my[20]="hello";
为什么C#不行?c#的string和char[]和byte[]有什么区别??
楼下的,你的代码通不过编译!!
char [] str = new char[20];
str = "hello"; 展开
5个回答
展开全部
因为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呢
在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呢
展开全部
你应该是C语言之后转过来学C#的吧
C语言可以动态申请大小,但是C#不可以 必须先实例化才可以使用、
所以你你如果想给str赋值首先要给str一个空间
char[] str=new char[5];
然后str="hello";
string[] 是字符串
baty[] 是字节
C语言可以动态申请大小,但是C#不可以 必须先实例化才可以使用、
所以你你如果想给str赋值首先要给str一个空间
char[] str=new char[5];
然后str="hello";
string[] 是字符串
baty[] 是字节
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char[] str = { Convert.ToChar("hello") };
在C#中
1.你声明的str是数组,就算是一维的也要用大括号括起来。
2."hello"是string类型的,需要转换成char类型。
在C#中
1.你声明的str是数组,就算是一维的也要用大括号括起来。
2."hello"是string类型的,需要转换成char类型。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C中char my[20]确定了分配的内存空间大小...
而你在C#中char []程序不知道应该为你的数组分配多大的内存空间.
你应该清楚的指定分配的大小:
char [] str = new char[20];
str = "hello";
而你在C#中char []程序不知道应该为你的数组分配多大的内存空间.
你应该清楚的指定分配的大小:
char [] str = new char[20];
str = "hello";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样你还不如直接用string
要转换到char数组就用
ToCharArray()方法
要转换到char数组就用
ToCharArray()方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询