您的位置:首页 > 编程语言 > C语言/C++

关于C++与C#的部分区别 C#静态构造函数

2012-11-17 10:08 274 查看
来自 《剑指offer  名企面试官精讲典型编程题》

问:C++中struct和class的区别?

答:如果没有标明成员函数或者成员变量的访问权限级别,在struct中默认为public,而在class中默认为private

问:那在C#中呢?

答:C#和C++不一样,在C#中如果没有标明成员函数和成员变量的访问权限级别,struct和class都是private的。

他们的区别在于,struct定义的是值类型,值类型的实例在栈上分配内存,而class定义的是引用类型,引用类型的实例在堆上分配内存。

C#中可以为类型定义一个特殊的构造函数:静态构造函数。这个函数的特点是在类型第一次被使用之前由运行时自动调用,而且保证只调用一次。

运行下面的C#代码,输入的结果是什么?

class A
{
public A(string text)
{
Console.WriteLine(text);
}
}
class B
{
static A a1 = new A("a1");
A a2 = new A("a2");

static B()
{
a1 = new A("a3");
}

public B()
{
a2 = new A("a4");
}
}
class Program
{
static void Main(string[] args)
{
B b = new B();
}
}

在调用类型B的代码之前先执行B的静态构造函数。静态构造函数先初始化类型的静态变量,再执行函数体内的语句。因此先打印a1再打印a3.
接下来执行B b new B(),即调用B的普通构造函数。构造函数先初始化成员变量,再执行函数体内的语句,因此先后打印出a2,a4.

则最后结果为a1,a3,a2,a4.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息