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 和空安全运算符。
相关推荐
IvanCodes2 分钟前
Python 数据处理(十三):JSON、CSV 与数据序列化
开发语言·python
aramae2 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
无敌贵点大王2 小时前
RTThread学习记录11——RT-Thread 设备模型吃透:UART/ADC/PWM/PIN 到底有什么区别?
c语言·stm32·学习·链表
淡海水3 小时前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
Logic1013 小时前
C语言/数据结构位运算题解:异或XOR找出时尚聚会中的“独特颜色“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
asdzx674 小时前
如何使用 C# 提取 PPT 文本与图片
c#·ppt·提取文本
qq_2518364574 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
郑州光合科技余经理5 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
知识分享小能手5 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
qq_199886875 小时前
第8板块·第2节:统一内存的高级特性与性能调优
c++·人工智能·gpu算力·cuda