網站首頁 編程語言 正文
托管對象的創建和引用
在前文中我們已經演示過創建一個托管對象,對于如下C#代碼:
System.Object?x =?new?System.Object();
其在C++/CLI中的等價代碼如下:
System::Object^ x =?gcnew?System::Object();
和傳統的C++創建的語法比較下,
P* x =?new?P();
我們不難發現,對于托管對象,主要引入了如下兩個語法:
用gcnew代替new實現托管對象的創建
用^代替*實現托管對象的指針
這種方式創建的對象是可以直接被CLR支持的,可以在C#中使用。托管對象指針使用的方式和傳統的對象指針還是比較類似的,直接使用->即可:
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#里沒有對應的語法,用起來感覺怪怪的,也不方便于其它.net語言集成。
托管類型的定義
我們也可以自定義托管類型,在CLR中,托管類型是分為引用類型(class)和值類型(struct)的,在C++/CLI中的分別定義方式如下:
引用類型:
public ref class MyClass
{
};
值類型:
public value class MyClass
{
};
在ISO C++中類定義中加上了ref或value標記為托管類型,還算比較容易使用。
枚舉
枚舉的定義和C++11的enum class一樣,它像數字那樣可以同時應用于托管類型和非托管類型。
public?enum?class?SomeColors?{?Red,?Yellow,?Blue?};
或者更精確的表示:
public enum class SomeColors : char { Red, Yellow, Blue };
數組
C++/CLI中新增了array<T> ^的方式定義數組。
array<int> ^a =?gcnew?array<int>(100) { 1, 2, 3 };
或者使用它的完整版:
cli::array<int> ^a =?gcnew?cli::array<int> {1, 2, 3};
不定參數
對于C#中的不定參數的語法:
void?foo(params?string[] args)
在C++/CLI中對應的版本為:
void?foo(...?array<String^>^?args)
原文鏈接:https://www.cnblogs.com/TianFang/p/4937779.html
相關推薦
- 2022-06-09 4種方法python批量修改替換列表中元素_python
- 2022-09-25 文本文件與二進制文件的區別
- 2022-09-29 C#/VB.NET中從?PDF?文檔中提取所有表格_C#教程
- 2022-11-04 詳解C++?指針與二維數組名_C 語言
- 2022-09-21 Android開發兩個activity之間傳值示例詳解_Android
- 2022-08-20 Python?實現一個全連接的神經網絡_python
- 2022-08-13 Redis - 時間序列數據類型的保存方案和消息隊列實現
- 2023-02-03 VB十七種可用一行代碼完成判斷的技巧代碼_vb
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支