C++、C#常用语法对比

对比项 C++ 实现示例 C# 实现示例
变量声明与初始化 int num = 10; string str = "hello"; auto list = vector<int>(); int num = 10; string str = "hello"; var list = new List<int>();
条件语句(if-else) if (num > 0) { cout << "正数" << endl; } else { cout << "负数" << endl; } if (num > 0) { Console.WriteLine("正数"); } else { Console.WriteLine("负数"); }
条件语句(switch) switch (str) { case "hello": cout << "你好" << endl; break; } switch (str) { case "hello": Console.WriteLine("你好"); break; }
循环语句(for) for (int i = 0; i < 5; i++) { cout << i << endl; } for (int i = 0; i < 5; i++) { Console.WriteLine(i); }
循环语句(遍历集合) for (auto& item : list) { cout << item << endl; } foreach (var item in list) { Console.WriteLine(item); }
循环语句(while) while (num > 0) num--; while (num > 0) num--;
类定义 class Person { private: string name; public: Person(string n) : name(n) {} } class Person { public string Name { get; set; } public Person(string name) { Name = name; } }
继承 class Student : public Person { public: Student(string n) : Person(n) {} } class Student : Person { public Student(string name) : base(name) {} }
方法重写 void SayHello() override { cout << "Hello" << endl; } public override void SayHello() { Console.WriteLine("Hello"); }
内存分配(栈) Person p1("Tom"); int age = 20;
内存分配(堆) Person* p2 = new Person("Jerry"); delete p2; Person p1 = new Person("Tom");
空值处理 string* str = nullptr; string name = (str != nullptr) ? *str : "默认值"; string str = null; string name = str ?? "默认值";
异常处理(try-catch) try { throw runtime_error("错误"); } catch (const runtime_error& e) { cout << e.what(); } try { throw new Exception("错误"); } catch (Exception ex) { Console.WriteLine(ex.Message); }
委托 / 函数指针 function<int(int, int)> add = [](int x, int y) { return x + y; }; delegate int Calculate(int a, int b); Calculate add = (x, y) => x + y;
异步编程 // C++20 coroutine 需手动实现 public async Task<int> GetDataAsync() { await Task.Delay(1000); return 100; }

总结

  1. 核心语法结构(循环、条件)两者相似,C# 新增 foreachvar 等语法糖,C++ 依赖 auto、范围 for。
  2. 面向对象层面,C++ 支持多继承、手动封装字段,C# 仅单继承、内置属性封装。
  3. 内存 / 空值处理,C++ 需手动管理堆内存、判断指针空值,C# 依赖 GC 和空安全运算符。
相关推荐
Scout-leaf13 小时前
C#摸鱼实录——IoC与DI案例详解
c#
clint45615 小时前
C++进阶(1)——前景提要
c++
咕白m62515 小时前
使用 C# 在 Excel 中应用多种字体样式
后端·c#
夜悊18 小时前
C++代码示例:进制数简单生成工具
c++
郝学胜_神的一滴20 小时前
CMake 021: IF 条件判据详诠
c++·cmake
Artech20 小时前
[MAF预定义的AIContextProvider-02]AgentSkillsProvider——将Agent Skills引入MAF
ai·c#·agent·agent skills·maf
_wyt0011 天前
洛谷 B3930 [GESP202312 五级] 烹饪问题 题解
c++·gesp
LDR0061 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术1 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园1 天前
C++20 Modules 模块详解
java·开发语言·spring