类与结构体在C++与C#中都是可以使用的,但是两者在两种语言中的区别却很大,今天在这里进行一下记录。
在C++中,类与结构体的唯一区别就是默认访问权限的区别。在struct中,默认的访问权限为public,而在类中,默认的访问权限为private。
在C#中,默认权限不再是两者的区别,其默认访问权限均为private的。区别在于,struct在C#中是值类型,值类型在栈上分配内存,而class为引用类型,在托管堆上分配内存。
静态构造函数:C#中的一个可以定义的特殊的构造函数,在类型第一次被 使用前调用,而且保证仅调用一次。例:
using System;
namespace ConsoleApp1
{
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();
}
}
}
本例考察了在C#中,static变量和static构造函数以及类的构造函数的相关知识。当运行该程序时,首先会调用静态构造函数,而在调用静态构造函数之前,会先初始化成员变量中的static成员,因此会先调用new A("a1"),然后调用静态构造函数中的new A("a3"),在静态构造函数完成后调用构造函数B b = new B(), 而在执行该函数之前,会先初始化所有其他的成员函数,因此会先调用new A("a2"),然后调用B b = new B()。所以程序输出结果为:
a1
a3
a2
a4