網(wǎng)站首頁 編程語言 正文
托管對象的創(chuàng)建和引用
在前文中我們已經(jīng)演示過創(chuàng)建一個(gè)托管對象,對于如下C#代碼:
System.Object?x =?new?System.Object();
其在C++/CLI中的等價(jià)代碼如下:
System::Object^ x =?gcnew?System::Object();
和傳統(tǒng)的C++創(chuàng)建的語法比較下,
P* x =?new?P();
我們不難發(fā)現(xiàn),對于托管對象,主要引入了如下兩個(gè)語法:
用gcnew代替new實(shí)現(xiàn)托管對象的創(chuàng)建
用^代替*實(shí)現(xiàn)托管對象的指針
這種方式創(chuàng)建的對象是可以直接被CLR支持的,可以在C#中使用。托管對象指針使用的方式和傳統(tǒng)的對象指針還是比較類似的,直接使用->即可:
System::Object^ x = gcnew System::Object();
auto str = x->ToString();
另外,C++/CLI也有一種類似于C++的對托管對象的引用的語法:
System::Object^ x = gcnew System::Object();
System::Object% y = *x;
auto str = y.ToString();
由于這種方式在C#里沒有對應(yīng)的語法,用起來感覺怪怪的,也不方便于其它.net語言集成。
托管類型的定義
我們也可以自定義托管類型,在CLR中,托管類型是分為引用類型(class)和值類型(struct)的,在C++/CLI中的分別定義方式如下:
引用類型:
public ref class MyClass
{
};
值類型:
public value class MyClass
{
};
在ISO C++中類定義中加上了ref或value標(biāo)記為托管類型,還算比較容易使用。
枚舉
枚舉的定義和C++11的enum class一樣,它像數(shù)字那樣可以同時(shí)應(yīng)用于托管類型和非托管類型。
public?enum?class?SomeColors?{?Red,?Yellow,?Blue?};
或者更精確的表示:
public enum class SomeColors : char { Red, Yellow, Blue };
數(shù)組
C++/CLI中新增了array<T> ^的方式定義數(shù)組。
array<int> ^a =?gcnew?array<int>(100) { 1, 2, 3 };
或者使用它的完整版:
cli::array<int> ^a =?gcnew?cli::array<int> {1, 2, 3};
不定參數(shù)
對于C#中的不定參數(shù)的語法:
void?foo(params?string[] args)
在C++/CLI中對應(yīng)的版本為:
void?foo(...?array<String^>^?args)
原文鏈接:https://www.cnblogs.com/TianFang/p/4937779.html
相關(guān)推薦
- 2023-01-01 Pycharm沒有報(bào)錯(cuò)提示(誤觸ignore)的完美解決方案_python
- 2022-06-12 C語言?深入探究動(dòng)態(tài)規(guī)劃之區(qū)間DP_C 語言
- 2023-06-19 scrapy?遠(yuǎn)程登錄控制臺的實(shí)現(xiàn)_python
- 2022-08-18 python列表生成器常用迭代器示例詳解_python
- 2022-08-14 Android?中TextureView和SurfaceView的屬性方法及示例說明_Android
- 2022-11-09 Android?使用maven?publish插件發(fā)布產(chǎn)物(aar)流程實(shí)踐_Android
- 2022-03-21 詳解C語言動(dòng)態(tài)內(nèi)存的分配_C 語言
- 2022-10-08 ASP.NET泛型一之泛型簡介與基本語法_實(shí)用技巧
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支