C# 和本机 C++之间的重要比较信息

转载 2007年10月04日 20:01:00
继承:在 C++ 中,类和结构实际上是相同的,而在 C# 中,它们很不一样。C# 类可以实现任意数量的接口,但只能从一个基类继承。而且,C# 结构不支持继承,也不支持显式默认构造函数(默认情况下提供一个)。

  数组:在 C++ 中,数组只是一个指针。在 C# 中,数组是包含方法和属性的对象。例如,可通过 Length 属性查询数组的大小。C# 数组还使用索引器(验证用于访问数组的各个索引)。声明 C# 数组的语法不同于声明 C++ 数组的语法:在 C# 中,“[]”标记出现在数组类型之后,而非变量之后。

  布尔值:在 C++ 中,bool 类型实质上是一个整数。在 C# 中,不存在 bool 类型与其他类型之间的相互转换。

  long 类型:long 类型在 C# 中为 64 位,而在 C++ 中为 32 位。

  传递参数:在 C++ 中,除非显式通过指针或引用传递,否则所有变量都通过值传递。在 C# 中,除非显式通过具有 ref 或 out 参数修饰符的引用传递,否则类通过引用传递,而结构通过值传递。

  switch 语句:与 C++ 中的 switch 语句不同,C# 不支持从一个 case 标签贯穿到另一个 case 标签。

  委托:C# 委托大致类似于 C++ 中的函数指针,是类型安全和可靠的。
  基类方法:C# 支持用于调用派生类中重写基类成员的 base 关键字。而且,在 C# 中,使用 override 关键字重写虚拟或抽象方法是显式的。

  方法隐藏:C++ 通过继承支持方法的隐式“隐藏”。在 C# 中,必须使用 new 修饰符来显式隐藏继承的成员。

  预处理器指令用于条件编译。C# 中不使用头文件。
  异常处理:无论是否引发异常,C# 都提供 finally 关键字以提供应执行的代码。

  C# 运算符:C# 支持其他运算符,如 is 和 typeof。它还引入了某些逻辑运算符的不同功能
  在 C++ 中,extern 用于导入类型。在 C# 中,extern 用于为使用同一程序集的不同版本创建别名。

  static 关键字:在 C++ 中,static 既可用于声明类级实体,也可用于声明特定于某模块的类型。在 C# 中,static 仅用于声明类级实体。

  C# 中的 Main 方法和 C++ 中的 main 函数的声明方式不同。在 C# 中,它是大写的,并且始终是 static 的。此外,在 C# 中,对处理命令行参数的支持要可靠得多。

  在 C# 中,只有在 unsafe 模式下才允许使用指针。
  在 C# 中以不同的方式执行重载运算符。

  字符串:在 C++ 中,字符串只是字符的数组。在 C# 中,字符串是支持可靠搜索方法的对象。

  foreach 关键字使您可以循环访问数组和集合。

  全局:在 C# 中,不支持全局方法和全局变量。方法和变量必须包含在 class 或 struct 之内。
  导入类型:在 C++ 中,多个模块公用的类型放置在头文件中。在 C# 中,可通过元数据获取此信息。

  C# 中的局部变量在初始化前不能使用

  内存管理:C++ 语言不提供垃圾回收功能; 在进程终止前,未显式释放的内存仍保持已分配的状态。C# 语言提供垃圾回收功能。
  析构函数:C# 具有用于确定地释放非托管资源的不同语法。

  构造函数:与 C++ 类似,如果在 C# 中不提供类构造函数,则为您自动生成一个默认构造函数。该默认构造函数将所有字段初始化为它们的默认值。

  C# 不支持位域
  C# 的输入/输出服务和格式设置依赖于 .NET Framework 的运行时库。
  在 C# 中,方法参数不能有默认值。如果要获得同样的效果,请使用方法重载。
  在 C# 中,为类型参数化提供泛型类型和泛型方法的方式与 C++ 模板类似,尽管存在显著的差异。

  as 关键字与标准强制转换类似,不同之处在于:如果转换失败,则返回值为空,而不是引发异常。这与使用 C++ 中的 static_cast(与 dynamic_cast 不同,它不执行运行时检查,因此失败时不引发异常)相似。 

C# 和本机 C++(它不使用 /clr)之间的重要比较信息(一)

继承:在 C++ 中,类和结构实际上是相同的,而在 C# 中,它们很不一样。C# 类可以实现任意数量的接口,但只能从一个基类继承。而且,C# 结构不支持继承,也不支持显式默认构造函数(默认情况下提供一...
  • kybd2006
  • kybd2006
  • 2007年05月21日 09:59
  • 538

C# 和本机 C++(它不使用 /clr)之间的重要比较信息(二)

extern 关键字:在 C++ 中,extern 用于导入类型。在 C# 中,extern 用于为使用同一程序集的不同版本创建别名。static 关键字:在 C++ 中,static 既可用于声明类...
  • kybd2006
  • kybd2006
  • 2007年05月21日 10:03
  • 438

一些重要的C++ 基础

内存中寻址(addressable)的最小单位是字节 (byte),存储的最小单位是字 (word) 在大部分计算机的实现中,1 byte=8 bits, 1 word = 4 bytes / 8 b...
  • Ace_Yom
  • Ace_Yom
  • 2015年09月27日 22:44
  • 355

C/C++重要知识点

成员以其在类中声明的顺序构造 摘要: 分析以下代码的输出:#includeusing namespace std;class A{public: A(int j):age(j) , num(...
  • lishenglong666
  • lishenglong666
  • 2015年04月22日 17:38
  • 773

几个比较重要的设计模式的总结与应用

1. 设计模式分为创建型,结构型,行为型。   2. 创建型 2.1 工厂方法。生产同一接口的不同产品。 如:Spring Aop中AopProxyFactory(具体实现类为Defaul...
  • sum_rain
  • sum_rain
  • 2015年05月04日 22:24
  • 1512

对C++和C#优缺点的分析

原文网址:http://www.01on.com/a/347.html1、学习语言难度是不同的,如果一个没有任何计算机概念的人一开始就学习c或c++,我可以肯定的说,1000个人里不会有200人坚持下...
  • larntin2002
  • larntin2002
  • 2007年11月19日 09:56
  • 1575

C++ 和 C# 之间的比较

下表包含 C++ 和 C# 功能之间的重要比较。如果您是一位 C++ 程序员,此表将为您提供这两种语言的最重要差异。有关详细信息,请使用链接浏览详细的主题。注意   C++ 和 C# 项目派生于不同的...
  • chenkangli
  • chenkangli
  • 2005年06月03日 16:41
  • 1475

比较C#与C++、Java的异同

最近正在看C#视频,但是感觉效率很低,还是停下脚步总结一下、思考一下吧!         开始接触C#,我们都会有一个疑问:C#和C++有什么区别呢?学过Java的同学会想C#和Java有什么区别呢...
  • u013034286
  • u013034286
  • 2014年12月21日 10:30
  • 2727

C# 日期比较 方法

use "DateTime.Compare" static method  DateTime.Compare( dt1, dt2 ) > 0 : dt1 > dt2  DateTime.Compare...
  • zth603
  • zth603
  • 2010年08月30日 11:30
  • 10095

C++输入流和输出流心得

cout语句的一般格式为 cout cin语句一般格式为 cin>>表达式1>>表达式2>>...表达式n; 在进行输入或输出操作时,cout、cin都是按从右至左的原则进行求值的;因...
  • ys258083587
  • ys258083587
  • 2013年06月07日 00:45
  • 770
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# 和本机 C++之间的重要比较信息
举报原因:
原因补充:

(最多只允许输入30个字)