//=====================================================================
//TITLE:
// C++ VS C#(4):枚举,结构体
//AUTHOR:
// norains
//DATE:
// Tuesday 7-December-2010
//Environment:
// Visual Studio 2010
// Visual Studio 2005
//=====================================================================
1.枚举
无论是C++还是C#都采用enum来声明一个枚举类型,比如:
但在使用上,却大相径庭。对于C++来说,可以直接使用定义的类型,而C#则必须增加一个.标示,如:
这样看来,C#似乎繁琐一点,还要相应的类型定义;但这样却带来另外一个好处,就是同一命名空间里面的不同的enum类型可以有相同的数值,如:
这段代码在C#中能够顺利编译,在C++中会提示如下错误:error C2365: 'RGB888' : redefinition; previous definition was 'enumerator};
C++中的enum本质只是一组数值的集合,名称也仅仅是数值的标识,但对于C#而言,却又向前跨进了一步,enum还可以获得相应的名称字符串,如:
不仅可以使用成员函数,还可以使用全局的Convert函数,如:
更为有意思的是,除了数值类型,string也能转换为enum类型,如:
不过需要注意,这里的字符串也是大小写敏感,如果该转换的字符串不在enum类型的名称之列,则会出错。
2.结构体
在C++中,类和结构体是一致的,唯一的区别在于,类默认的访问域是private,而类是public。但对于C#来说,结构体的成员默认访问域为private,如果要指定public,则必须每个成员变量都指定,如:
可能熟悉C++的朋友会觉得这样写有点麻烦,C#里面能不能也像C++这样:
但很可惜,这种写法是在C#中是不成立的。简单点来记忆,C#关于结构体的语法,都可以完整移植到C++中,反之则不成立。
分享到:
相关推荐
c++调用C# COM 参数是结构体数组
在写C#TCP通信程序时,发送数据时,只能发送byte数组,处理起来比较麻烦不说,如果是和c++等写的程序通信的话,很多的都是传送结构体,在VC6.0中可以很方便的把一个char[]数组转换为一个结构体,而在C#却不能直接把...
资源代码演示的是c#代码调用c++ DLL 的方式。该演示为原创,绝非搬砖。解决了c# 调用 C++ Dll获取相关信息之如何传递结构体数组引用以及如何处理获取到的结构体数组数据的问题。
把c++的结构体、数据类型、函数定义转换成对应的c#表达,很强大。
C#调用C++生成的DLL,并返回结构体引用或者结构体指针多个值,工程已编译好
C语言教学课件:c语言结构体.ppt
C语言:指向结构体的指针.c
Swift语言教程:Swift 结构体教程
C语言程序设计:c语言结构体.ppt
C语言课件:10结构体与共用体.ppt
C语言程序设计课件:8 结构体&共用体.ppt
c# 调用c++对于字符串与复杂结构体的处理
C#调用C++ dll, 包括结构体, 数组, 函数指针, 字符串等等
WinForm开发必备:Color结构体颜色和SystemColors颜色列表 以列表方式展示出Color结构体中已经定义的颜色和SystemColors中的颜色。
c#调用C++动态库、执行回调函数,并回传结构体参数数据。vs2017环境编写C#和C++动态库,这个为完整工程例子,可供相关人员学习参考。