c类型转为c#.char[] 对应c#什么类型?

banping 2007-08-02 05:01:22
有一个结构体在c中定义的,
里面有一个项是char name[40]

看了下帮助在vb6.0中是直接转为string *40,现在在vb.net和在c#中如何转化?
我在vb.net中使用space(40),name =new string('/0',40)都没有用报错是非法访问不可写的内存.而在vb6.0中是没有问题的.关键就是要定义一个定长的string.
...全文
1784 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
banping 2007-08-03
  • 打赏
  • 举报
回复
结帐,需要使用byte[]来定义,就没有问题了.
banping 2007-08-03
  • 打赏
  • 举报
回复
使用string 报错尝试读取或写入受保护的内存
lifeixie 2007-08-03
  • 打赏
  • 举报
回复
byte[] char[]
Mingle_Qin 2007-08-03
  • 打赏
  • 举报
回复
string strData = string.Empty;
strData = strData.PadLeft(40);
char[] cChar = strData.ToCharArray();
banping 2007-08-03
  • 打赏
  • 举报
回复
用 string 即可,何必那么麻烦,就是用string 的时候报错的呀.说是写入不可访问内存.
showmy 2007-08-02
  • 打赏
  • 举报
回复
JF UP 学习
MicroDeviser 2007-08-02
  • 打赏
  • 举报
回复
数组不是定长的吗?
amandag 2007-08-02
  • 打赏
  • 举报
回复
用 string 即可,何必那么麻烦
Jinglecat 2007-08-02
  • 打赏
  • 举报
回复
C/C++ 中字符串实际上是 字符数组,

.net 中直接用 System.String 表示

banping 2007-08-02
  • 打赏
  • 举报
回复
typedef struct
{
char name[40]; //姓名
char sex[10]; //性别
char people[20]; //民族,
}IDCARD_ALL;
这个结构体如何在.net中定义呀,这个结构体是要用ref传递过去有dll付职的.
定义char[] name,传过去报错.string 也错,资料中的vb例子是用的string *40.
求高人指点
nacarat 2007-08-02
  • 打赏
  • 举报
回复
char[] c = new char[40];

yourmethod(ref c);
wdzr_826 2007-08-02
  • 打赏
  • 举报
回复
StringBuilder
kingonehappy 2007-08-02
  • 打赏
  • 举报
回复
byte[]?
Avoid 2007-08-02
  • 打赏
  • 举报
回复
传入StringBuilder不要在参数前添加ref
banping 2007-08-02
  • 打赏
  • 举报
回复
to:wangsaokui(无间道III(终极无间)C#MVP)
关键是这个值我是要用ref 传递到dll中去写的.不是由我控制的.如果传递的不是定长是会报错的
wangsaokui 2007-08-02
  • 打赏
  • 举报
回复
当然可以添加别的字符,不只是长度
wangsaokui 2007-08-02
  • 打赏
  • 举报
回复
关键就是要定义一个定长的string

你可以在赋值的时候进行限制啊!
// Unicode Mathematical operators
char [] charArr1 = {'\u2200','\u2202','\u200F','\u2205'};
String szMathSymbols = new String(charArr1);

// Unicode Letterlike Symbols
char [] charArr2 = {'\u2111','\u2118','\u2122','\u2126'};
String szLetterLike = new String (charArr2);
-------------------------------

另外可以
String.PadLeft 或 String.PadRight 在左边或右边添加空格保证长度
mapserver 2007-08-02
  • 打赏
  • 举报
回复
char name[40]
就是40个长度的字符数组嘛,在c#中
char[] 不可以吗?
List<Char> 不可以吗?

用StringBuilder到也是可以的。
viena 2007-08-02
  • 打赏
  • 举报
回复
byte[]吧
Avoid 2007-08-02
  • 打赏
  • 举报
回复
StringBuilder sb = new StringBuilder(40)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧