| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
七、CLR对象示例
|
关键字gcnew用来实例化一个CLI对象,而且它返回一个指向在CLR堆上的对象的句柄,gcnew的优点在于它可以方便的让我们区分拖管和非拖管的实例对象。 网管朋友网www_bitscn_net
大部分情况下,gcnew关键字和^操作符提供了你用来进行BCL的一切手段,但是很明显你需要创建和声明属于自己的拖管类和接口。 网管联盟bitsCN_com
八、声明类型
中国网管联盟bitsCN.com
CLR类型有一个形容词前缀用来说明类型的种类,下面是C++/CLI中的类型声明示例:
|
上述程序中的代码与老的C++语言相比看上去非常简洁,在以往的C++代码中,至少要用到-gc和-interface这两个关键词。 中国网管论坛bbs.bitsCN.com
九、装箱/拆箱操作 中国网管联盟bitsCN.com
在C++/CLI中,加箱是隐含的,而且类型是安全的,一个二进制的拷贝被执行并在CLR堆上形成一个对象,去箱是显式的,仅仅需要使用reinterpret_cast操作符来解除引用。 网管bitscn_com
|
在上述代码中,"o"对象是一个加箱的拷贝,从第二个语句Console::WriteLine.的输出可以很明显地看到,它并没有涉及到int类型的整数值。
网管u家u.bitscn@com
当你对一种数值类型进行加箱操作时,返回的对象记住了最初的数值类型。
|
因此不能对不同类型的对象进行去箱操作。 网管朋友网www_bitscn_net
|
如果你非尝试这么做,那么你将得到一个System.InvalidCastException。让我们来探讨一下完美的类型安全性,如果你要看内部代码,你将看到微软的内部箱在实际中的运用。例如: 网管网www.bitscn.com
|
编译后的代码是:
|
根据微软的内部文档,箱操作将未加工的类型转换为一个具体类型的实例,这项工作的完成通过创建一个新的对象并将数据拷贝到这个新分配的对象。
网管论坛bbs_bitsCN_com
十、写在后面的话 网管有家www.bitscn.net
为什么很多人已经可以使用C、C++、.NET来开发程序但还在积极学习C++/CLI呢,我想有四个方面的原因:
网管u家u.bitscn@com
1、从编译器直到内层都还在支持C++代码;
2、C++/CLI对于其他标准来说无意是具有毁灭性地; 网管u家u.bitsCN.com
3、与生俱来的内部支持胜过所有其他CLI语言 网管联盟bitsCN_com
4、所有在MFC中出现的下划线都已不再存在。 网管下载dl.bitscn.com
|
0
|
评论加载中…