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 和空安全运算符。
相关推荐
kkkkkkkkkk_Z30 分钟前
学嵌入式和C语言编程数据结构|学习日记Day22:栈,二叉树,哈希存储
c语言·数据结构·学习
覆东流32 分钟前
7.Java数组
java·开发语言·后端
Navigator_Z36 分钟前
LeetCode //C - 1206. Design Skiplist
c语言·算法·leetcode
码行山野赴时序归途1 小时前
三道经典数组题:从暴力到最优的算法思维
c语言·开发语言·数据结构·算法·leetcode
lzhdim1 小时前
提高 SQL 语句执行速度的方法
java·开发语言·数据库·sql·oracle
JavaPub-rodert1 小时前
王仕宇在 Go Context 如何解决协程泄漏与超时控制
开发语言·后端·golang·iphone·javapub·王仕宇
ly76893 小时前
JavaScript 从入门到进阶:核心语法、异步编程与工程化实践
开发语言·javascript·ecmascript
Navigator_Z3 小时前
LeetCode //C - 1209. Remove All Adjacent Duplicates in String II
c语言·算法·leetcode
落魄大学生之流水线上谋生计3 小时前
Java锁全面指南:从基础概念到企业级应用
java·开发语言
for_ever_love__3 小时前
python基础语法学习: 闭包
开发语言·python·学习·闭包