前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2019-11-12-C++CLI的枚举在C#中看不见

2019-11-12-C++CLI的枚举在C#中看不见

作者头像
黄腾霄
发布2020-06-10 14:34:37
6660
发布2020-06-10 14:34:37
举报
文章被收录于专栏:黄腾霄的博客黄腾霄的博客

最近在搞C++/CLI,发现我在其中写的enum居然不见了,这个是怎么回事呢。


首先我们在C++/CLI项目里面建立一个enum

image-20191112213759299
image-20191112213759299

当我们将其在c#项目中引用时,神奇的事情发生了,这个枚举的枚举值不见了。

image-20191112213851595
image-20191112213851595

现在我们试着给枚举值做一点改变,加一个class

image-20191112214202076
image-20191112214202076

枚举又正常了。

image-20191112214111481
image-20191112214111481

实际上在C++/CLI中我们可以定义两种枚举类型,不加class关键字的是标准C++枚举,加class关键字的是托管枚举或者叫做CLR枚举。

对于C++/CLI来说,作为一种跨边界语言,能够轻松的在托管和非托管语言中自由切换,但是对于C#项目(.NET)项目来说,必须使用CLS兼容的托管枚举。所以没有class关键字的枚举,自然就看不见了。


参考文献:

visual studio - C++/CLI enum not showing up in C# with reference to C++/CLI project - Stack Overflow

How to: Define and consume enums in C++/CLI - Microsoft Docs


本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/C++CLI%E7%9A%84%E6%9E%9A%E4%B8%BE%E5%9C%A8C-%E4%B8%AD%E7%9C%8B%E4%B8%8D%E8%A7%81.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档