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 和空安全运算符。
相关推荐
测试员周周2 小时前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
杜子不疼.5 小时前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
加号35 小时前
【C#】 串口通信技术深度解析及实现
开发语言·c#
sycmancia6 小时前
Qt——编辑交互功能的实现
开发语言·qt
秋雨雁南飞6 小时前
Visual Studio 常用扩展
ide·visual studio
石山代码6 小时前
C++ 内存分区 堆区
java·开发语言·c++
无风听海6 小时前
C# 隐式转换深度解析
java·开发语言·c#
LateFrames7 小时前
520 - 如何说晚安 (WPF)
c#·wpf·浪漫·ui体验
一只大袋鼠7 小时前
Git 进阶(二):分支管理、暂存栈、远程仓库与多人协作
java·开发语言·git
LuminousCPP8 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习