C#与C/C++之别一

来源:互联网 发布:mac 迅雷影音 编辑:程序博客网 时间:2024/05/05 10:56

          现在为了工作的需要,需要深入学习c#,现记录C#和C/C++的区别,以方便以后对比和查阅,记录的资料参照《C#高级编程》(第七版)!


内联

        一些开发人员可能会担心,在上一节中,我们列举了许多情况,其中标准C#编码方式导致了大材小用,例如,通过属性访问字段,而不是直接访问字段。这些额外的函数调用是否会增加系统开销,导致性能下降?其实,不需要担心这种编程方式会在C#中带来性能损失。C#代码会编译为IL,然后在运行时JIT编译为本地可执行代码。JIT编译器可生成高度优化的代码,并在适当的时候随意地内联代码(即,用内联代码来替代函数调用)。如果实现某个方法或属性仅是调用另一个方法,或返回一个字段,则该方法或属性肯定是内联的。但要注意,在何处内联代码完全由CLR决定。我们无法使用像C++中inline这样的关键字来控制哪些方法是内联的。


静态构造函数
C#的一个新特征是也可以给类编写无参数的静态构造函数。这种构造函数只执行一次,而前面的构造函数是实例构造函数,只要创建类的对象,就会执行它。
class MyClass
{
static MyC1ass()
{
// initialization code
}
// rest of class definition
}
编写静态构造函数的一个原因是,类有一些静态字段或属性,需要在第=次使用类之前,从外部源中初始化这些静态字段和属性。

注意,无参数的实例构造函数与静态构造函数可以在同一个类中同时定义。尽管参数列表相同,但这并不矛盾,因为在加载类时执行静态构造函数,而在创建实例时执行实例构造函数,所以何时执行哪个构造函数不会有冲突。


只读字段

常量的概念就是一个包含不能修改的值的变量,常量是C#与大多数编程语言共有的。但是,常量不必满足所有的要求。有时可能需要一些变量,其值不应改变,但在运行之前其值是未知的。C#为这种情形提供了另一种类型的变量:只读字段。
readonly关键字比const灵活得多,允许把一个字段设置为常量,但还需要执行一些计算,以确定它的初始值。其规则是可以在构造函数中给只读字段赋值,但不能在其他地方赋值。只读字段还可以是一个实例字段,而不是静态字段,类的每个实例可以有不同的值。与const字段不同,如果要把只读字段设置为静态,就必须显式声明它。

0 0
原创粉丝点击