结构类型
定义:
struct MyStructName
{
public <Type> <TypeName>;
}
结构是值类型\
//声明
MyStructName name = new MyStructName();
//调用
//name.<TypeName>
结构可以拥有函数
类
类是引用类型
定义:
class MyClass
{
//Class Members
}
访问级别
private : 私有成员, 在类的内部可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
internal: 在同一命名空间内可以访问。
public : 公共成员,完全公开,没有访问限制。
编译器是不容许派生类的访问级别高于基类
abstract与sealed
abstract:不能实例化,只能继承,可以有抽象成员。
sealed:密封类,不能被继承。
构造函数和析构函数
构造函数:
在类实例化时需要执行的(例如对类成员的赋值)
static void Main(string[] args)
{
MyClass mc = new MyClass();
Console.WriteLine(mc.a);
Console.ReadKey();
}
class MyClass
{
public int a;
public MyClass()
{
a = 10;
}
}
析构函数:
当进行垃圾回收时,就执行析构函数中的代码,释放资源。
因为C#特有的GC机制,所以不要太去担心内存的问题。
结构和类的区别
结构是值类型,类是引用类型
static void Main(string[] args)
{
MyClass ca = new MyClass();
MyClass cb = ca;
ca.ca = 10;
cb.ca = 20;
Console.WriteLine("ca.ca="+ca.ca);
Console.WriteLine("cb.ca=" + cb.ca);
MyStruct sa = new MyStruct();
MyStruct sb = sa;
sa.sa = 10;
sb.sa = 20;
Console.WriteLine("sa.ca=" + sa.sa);
Console.WriteLine("sb.ca=" + sb.sa);
Console.ReadKey();
}
class MyClass
{
public int ca;
}
struct MyStruct
{
public int sa;
}
/*
输出:
ca.ca=20
cb.ca=20
sa.ca=10
sb.ca=20
*/
类是引用类型。在把对象赋给变量时,实际上是把带有指针的一个变量赋给了该指针所指向的对象。
下列语句是复制了地址。
MyClass cb = ca;
结构是值类型。其变量并不是包含结构的指针,而是包含结构体本身。
下列语句是复制了结构体的信息。
MyStruct sb = sa;