首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#和VB.NET中强制转换的区别

C#和VB.NET中强制转换的区别
EN

Stack Overflow用户
提问于 2009-12-09 22:06:42
回答 7查看 3K关注 0票数 8

下面的代码在C#中运行良好。

代码语言:javascript
运行
复制
    Int32 a, b;
    Int16 c;

    a = 0x7FFFFFFF;
    b = a & 0xFFFF;
    c = (Int16)b;

但这段代码在VB.NET中使用OverflowException时会崩溃。

代码语言:javascript
运行
复制
    Dim a, b As Int32
    Dim c As Int16

    a = &H7FFFFFFF
    b = a And &HFFFF
    c = CType(b, Int16)

这两个代码片段在我看来是一样的。有什么区别?如何将C#代码转换为VB.NET?

EN

Stack Overflow用户

发布于 2010-12-06 15:59:43

http://www.cnblogs.com/liujq007/archive/2010/12/04/1896059.html

摘要:

对于无符号类型:只需执行And运算符,或2st方法。

代码语言:javascript
运行
复制
Dim a As Byte = CByte(300 And &HFF)

对有符号类型:向左移位n位,然后向右移位n位,这是为了扩展有符号位。N= (sizeof(type1) - sizeof(type2)) *8或VB:使用Len(新类型)而不是sizeof(类型)

代码语言:javascript
运行
复制
Dim a As Short = CShort(34042 << 16 >> 16)

您可以在下面的链接中找到详细信息。

票数 1
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1874130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档