c#里的sizeof

privatevoidbutton5_Click(objectsender,EventArgse){chara='去';MessageBox.Show(sizeof(by... private void button5_Click(object sender, EventArgs e)
{
char a='去';
MessageBox.Show(sizeof(byte).ToString()); // char类型占两个字节

MessageBox.Show(Marshal.SizeOf(a).ToString());// char变量a占1个字节

//这是什么情况,为什么会只占一个字节
}
代码发错:实际为:

private void button5_Click(object sender, EventArgs e)
{
char a='去';
MessageBox.Show(sizeof(char).ToString()); // char类型占两个字节

MessageBox.Show(Marshal.SizeOf(a).ToString());// char变量a占1个字节

//这是什么情况,为什么会只占一个字节
}
展开
 我来答
Haoritian
2011-12-27 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:99
采纳率:0%
帮助的人:48.4万
展开全部
你一个是sizeof(),一个是Marshal.SizeOf,结果当然不同
Marshal.SizeOf是获得该类型被Marshal(转换,通常翻译为列集,指数据从一种类型转换到另外一种类型)到对应的非托管类型的大小
.NET中char总是Unicode,而缺省情况下char会被Marshal成8位的Ansi字符,因此结果不同。
Think_allThink
2011-12-27 · TA获得超过157个赞
知道小有建树答主
回答量:600
采纳率:0%
帮助的人:240万
展开全部
你确定吗
追问
困惑中,第一句MessageBox.Show(sizeof(char).ToString());  弹出2
第二句MessageBox.Show(Marshal.SizeOf(a).ToString());弹出1

如果说是.net的优化,那也说不过去,中文应该占两个字节吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8c512873d
2011-12-27 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:196
采纳率:0%
帮助的人:105万
展开全部
路过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式