WEB开发网
开发学院软件开发C语言 由C++转向C#需要注意的问题 阅读

由C++转向C#需要注意的问题

 2009-04-11 08:25:15 来源:WEB开发网   
核心提示:C#是建立在C++的语法和语义的,可以让C语言编程人员利用.NET和通用语言运行库带来的便利,由C++转向C#需要注意的问题,尽管从C++转向C#是相对容易的,但仍然有些地方值得我们注意,事实上,如果仍然想在C#中使用在VisualBasic中创建的对象,本文将重点讨论由C++转向C#时最大的变化:由不可管理的环境向可

C#是建立在C++的语法和语义的,可以让C语言编程人员利用.NET和通用语言运行库带来的便利。尽管从C++转向C#是相对容易的,但仍然有些地方值得我们注意。

本文将重点讨论由C++转向C#时最大的变化:由不可管理的环境向可管理的环境的变化。此外,还会提出一些C#编程人员容易犯的错误供大家参考,并将说明一些C#语言的能够影响编程的新功能。 

转向可管理的环境

C++的设计目标是低级的、与平台无关的面向对象编程语言,C#则是一种高级的面向组件的编程语言。向可管理环境的转变意味着你编程方式思考的重大转变,C#不再处理细微的控制,而是让架构帮助你处理这些重要的问题。例如,在C++中,我们就可以使用new在栈中、堆中、甚至是内存中的某一特定位置创建一个对象。 

在.NET的可管理环境中,我们再不用进行那样细微的控制了。在选择了要创建的类型后,它的位置就是固定的了。简单类型(ints、double和long)的对象总是被创建在栈中(除非它们是被包含在其他的对象中),类总是被创建在堆中。我们无法控制对象是创建在堆中哪个位置的,也没有办法得到这个地址,不能将对象放置在内存中的某一特定位置。(当然也有突破这些限制的方法,但那是很另类的方法。)我们再也不能控制对象的生存周期,C#没有destructor。碎片收集程序会将对象所占用的内存进行回收,但这是非显性地进行的。 

正是C#的这种结构反映了其基础架构,其中没有多重继承和模板,因为在一个可管理的碎片收集环境中,多重继承是很难高效地实现的。 

C#中的简单类型仅仅是对通用语言运行库(CLR)中类型的简单映射,例如,C#中的int是对System.Int32的映射。C#中的数据类型不是由语言本身决定的,而是由CLR决定的。事实上,如果仍然想在C#中使用在VisualBasic中创建的对象,就必须使自己的编程习惯更符合CLR的规定。 

1 2 3 4 5 6  下一页

Tags:转向 需要 注意

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接