C# VS C++ (变量与数据类型)

C# 和 C++ 在变量与数据类型方面的主要区别

特性/方面C#C++说明(含举例)
语言类型现代托管语言,运行在 .NET CLR 上低级、性能强、接近硬件的系统语言C# 有垃圾回收,比如创建字符串不用手动释放:
string s = "hello";
C++ 需要手动管理内存:
char* s = new char[6]; strcpy(s, "hello"); delete[] s;
变量声明必须声明类型,支持类型推断(var必须声明类型,C++11 起支持 auto 类型推断C# 支持:var x = 10;
C++ 支持:auto x = 10;
数据类型有内置的高级数据类型(stringdecimal复杂,支持内置类型和自定义类型C# 内置字符串类型:string name = "张三";
C++ 需要使用标准库字符串:std::string name = "张三";
字符串string 是引用类型,内置强大字符串库使用 std::string(标准库)或裸指针C# 字符串拼接:string s = "Hello" + " World";
C++ 字符串拼接:std::string s = std::string("Hello") + " World";
常量声明使用 constreadonly使用 constC# 编译时常量:const double PI = 3.14;
运行时只读字段:readonly double E;
C++ 只有编译时常量:const double PI = 3.14;
类型安全强类型语言,运行时安全检查强类型,但更多底层操作和指针C# 不允许隐式转换产生风险:double i = 10; int d = i;安全
C++ 指针操作更灵活但易错,如int* p = (int*)0x1234;
类型转换明确区分隐式和显式转换((int)Convert支持强制类型转换((int)static_castC# 强制转换:int i = (int)3.14;,字符串转整数:int n = int.Parse("123");
C++ 强制转换:int i = static_cast<int>(3.14);,字符串转整数:int n = stoi("123");
自动内存管理有垃圾回收,变量生命周期自动管理需手动管理(new/delete 或智能指针)C# 变量自动释放:string s = "abc";
C++ 需手动释放:int* p = new int(5); delete p; 或使用智能指针:std::unique_ptr<int> p(new int(5));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值