C#与C++的区别总结

简介:

从语法上看,C#吸收了VB,C++,Java等语言的优点,改进了不足,加入了大量实用特性。C#确实是优秀的语言,海神也让人敬仰(这大爷一把年纪还是以写代码为乐趣)。


本篇没有高级语法部分,只有基础语法和OOP。


基础语法:

  • 两种布尔逻辑运算符。侃:有意思

  • 字符串格式化打印。侃:好,这才是给人用的API

  • 数组:声明 C# 数组和声明 C++ 数组的语法不同。在 C# 中,“[]”标记出现在数组类型的后面。侃:C#的数组不错,更直观,里面也有更多的语法糖。

  • bool 类型:bool 类型和其他类型(特别是 int)之间没有转换。侃:好

  • struct 类型:在 C# 中,类和结构在语义上不同。struct 是值类型,而 class 是引用类型。侃:很好,值类型和引用类型都很有用,要不然C++也不会折腾什么POD。

  • switch 语句:与 C++ 中的 switch 语句不同,C# 不支持从一个 case 标签贯穿到另一个 case 标签。侃:很好,switch贯穿写法绝大部分都是漏写了break

  • delegate 类型:委托与 C++ 中的函数指针基本相似,但前者具有类型安全,是安全的。侃:极好,C#最大卖点之一,委托非常优雅的定义了回调,相比而言C++里各种函数指针类型定义简直要吐

  • 预处理器指令用于条件编译。C# 中不使用头文件。侃:很好,另外鄙视C++拿头文件当文档的

  • 异常处理:使用 finally 语句。侃:好

  • 非转义字符串。侃:极好,这才是给人读的字符串

  • C# 运算符:C# 支持其他运算符,如 is 和 typeof。它还引入了某些逻辑运算符的不同功能。侃:好

  • Main 方法和 C++ 中的 main 函数的声明方式不同。另外,比较每种语言的命令行参数的使用。侃:好,终于不用为老谭吵架了

  • 方法参数:C# 支持 ref 和 out 参数,这两个参数取代指针通过引用传递参数。侃:极好,显式调用,这比C++高的不知道哪里去了

  • 在 C# 中只在不安全模式下才使用指针。侃:好,当年Java因为没指针推销被一通喷,只好假装有指针。这有利于推销。

  • C# 中的局部变量在初始化前不能使用。侃:好

  • ///文档注释。侃:好

  • 函数支持参数数组。侃:好


OOP:

  • C# 中没有全局方法和全局变量:方法和变量必须包含在类型声明(如 class 或 struct)中。侃:习惯就好,全局方法有时候是很丑陋的,比如一个getxxx,你到底是从哪get的。

  • 继承:类只能继承一个基类中的实现。另外,类或接口可以实现多个接口。侃:单根继承很好。

  • 类成员有字段和属性之分。侃:好,懒人和勤快人都能用

  • 属性访问语法和自动属性。侃:好,比手写getter,setter好多了

  • 使用 new 修饰符显式隐藏继承成员。侃:很好

  • 部分类定义。侃:好,谁再规定Java一个类不能超过多少行,可以怼了。

  • 只读字段。侃:好

  • 静态构造函数。侃:好,终于不用分开写了。


参考:

https://msdn.microsoft.com/zh-cn/library/aa287549(v=vs.71).aspx




 本文转自 老G 51CTO博客,原文链接:http://blog.51cto.com/goldlion/1939424,如需转载请自行联系原作者

相关文章
|
18天前
|
Java 物联网 编译器
C#一分钟浅谈:.NET Core 与 .NET 5 区别
本文对比了 .NET Core 和 .NET 5,从历史背景、主要区别、常见问题及易错点等方面进行了详细分析。.NET Core 侧重跨平台支持和高性能,而 .NET 5 在此基础上统一了 .NET 生态系统,增加了更多新特性和优化。开发者可根据具体需求选择合适的版本。
41 7
|
5月前
|
存储 C++ Cloud Native
云原生部署问题之C++ 中的 nullptr 和 NULL 区别如何解决
云原生部署问题之C++ 中的 nullptr 和 NULL 区别如何解决
61 0
|
2月前
|
存储 安全 编译器
在 C++中,引用和指针的区别
在C++中,引用和指针都是用于间接访问对象的工具,但它们有显著区别。引用是对象的别名,必须在定义时初始化且不可重新绑定;指针是一个变量,可以指向不同对象,也可为空。引用更安全,指针更灵活。
|
2月前
|
网络协议 网络性能优化 C#
C# 一分钟浅谈:UDP 与 TCP 协议区别
【10月更文挑战第8天】在网络编程中,传输层协议的选择对应用程序的性能和可靠性至关重要。本文介绍了 TCP 和 UDP 两种常用协议的基础概念、区别及应用场景,并通过 C# 代码示例详细说明了如何处理常见的问题和易错点。TCP 适用于需要可靠传输和顺序保证的场景,而 UDP 适用于对延迟敏感且可以容忍一定数据丢失的实时应用。
40 1
|
21天前
|
开发框架 安全 .NET
C#面:Server.UrlEncode、HttpUtility.UrlDecode的区别
通过上述详细的解释和实例分析,相信大家对 `Server.UrlEncode` 和 `HttpUtility.UrlDecode` 的区别有了更深刻的理解,并能在实际开发中灵活运用。
28 0
|
2月前
|
C语言 C++
C 语言的关键字 static 和 C++ 的关键字 static 有什么区别
在C语言中,`static`关键字主要用于变量声明,使得该变量的作用域被限制在其被声明的函数内部,且在整个程序运行期间保留其值。而在C++中,除了继承了C的特性外,`static`还可以用于类成员,使该成员被所有类实例共享,同时在类外进行初始化。这使得C++中的`static`具有更广泛的应用场景,不仅限于控制变量的作用域和生存期。
59 10
|
2月前
|
C# 开发者
【捞底干货】C#中equals和==运算符的区别
【捞底干货】C#中equals和==运算符的区别
29 1
|
3月前
|
物联网 C# C语言
物联网开发中C、C++和C#哪个更好用
在物联网(IoT)开发中,C、C++和C#各有优缺点,适用场景不同。C语言性能高、资源占用低,适合内存和计算能力有限的嵌入式系统,但开发复杂度高,易出错。C++支持面向对象编程,性能优秀,适用于复杂应用,但学习曲线陡峭,编译时间长。C#易于学习,与.NET框架结合紧密,适合快速开发Windows应用,但性能略低,平台支持有限。选择语言需根据具体项目需求、复杂性和团队技术栈综合考虑。
|
2月前
|
C语言 C++
实现两个变量值的互换[C语言和C++的区别]
实现两个变量值的互换[C语言和C++的区别]
23 0
|
3月前
|
C# 索引
C# 一分钟浅谈:接口与抽象类的区别及使用
【9月更文挑战第2天】本文详细对比了面向对象编程中接口与抽象类的概念及区别。接口定义了行为规范,强制实现类提供具体实现;抽象类则既能定义抽象方法也能提供具体实现。文章通过具体示例介绍了如何使用接口和抽象类,并探讨了其实现方式、继承限制及实例化差异。最后总结了选择接口或抽象类应基于具体设计需求。掌握这两者有助于编写高质量的面向对象程序。
123 5