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 和空安全运算符。
相关推荐
共享家95272 小时前
Java入门(继承)
java·开发语言
Bert.Cai2 小时前
Python默认参数详解
开发语言·python
_饭团2 小时前
指针核心知识:5篇系统梳理4
c语言·开发语言·c++·笔记·深度学习·算法·面试
AuroBreeze2 小时前
RISC-V: Minimal U-mode implementation
linux·c语言·c++·risc-v
0xDevNull2 小时前
Java 高频面试题
java·开发语言
Ronin3052 小时前
【Qt常用控件】多元素控件
开发语言·qt·常用控件·多元素控件
一叶落4382 小时前
LeetCode 134. 加油站(贪心算法详解 + C语言实现)
c语言·数据结构·算法·leetcode·贪心算法
say_fall2 小时前
位运算底层逻辑与解题应用绪论
c++·学习·算法·leetcode·职场和发展