结构
结构是一种值类型,通常用来封装一组相关的变量,结构可以包括结构函数,常量,字段,方法,属性,运算符,事件和嵌套类型等。但如果要同时包括上述几种成员,则应该考虑使用类。
结构实际是将多个相关的变量包装成一个整体使用。在结构体中的变量,可以是相同,部分相同,或完全不同的数据类型。例如,可以将公司里的职员看作一个结构体,将个人信息放入结构体中,主要包含姓名,年龄,出生日期,性别,籍贯,婚否,职务。
结构具有以下特点。
结构是值的类型。
向方法传递时,结构是通过传值的方式传递的,而不是作为引用传递的。
结构的实例化可以不使用new 运算符。
结构可以声明构造函数,但它们必须带参数。
一个结构不能从另一个结构或类继承。所有结构都是直接继承自System.ValueType,后者继承自 System.Object。
结构可以实现接口。
在结构中初始化实例字段是错误的。
(在结构中,除非字段被声明为const 或 static,否则无法初始化。)
C#中使用struct 关键字来声明结构,语法如下
结构修饰符 struct 结构名
{
}
public struct Books
{
public string title;
public string author;
public string subject;
public int book_id;
};
类
构造函数和析构函数
构造函数的名称与类的名称完全相同,它没有任何返回类型。
class Book
{
public Book() //无参构造方法
{
}
public Book(int args) //有参构造方法
{
args = 2 + 3;
}
}
析构函数的名称是在类的名称前加上一个波浪形(~)作为前缀,它不返回值,也不带任何参数。
析构函数用于在结束程序(比如关闭文件、释放内存等)之前释放资源。析构函数不能继承或重载。
class Book
{
~Book() //析构函数
{
Console.WriteLine("析构函数自动调用");
}
}
(一个类中只能有一个析构函数,并且无法调用析构函数,他是被自动调用的。)
继承
父类
class Computer
{
public string _Screen = "电脑";
public Computer()
{
Console.WriteLine("-------Computer构造-----");
}
public void Startup()
{
Console.WriteLine("-------Computer方法-----");
}
}
子类
调用父类方法用base(不是super)
class Pad :Computer //用 : 表示继承(extends)
{
public Pad()
{
Console.WriteLine("-------Pad构造-----");
}
public void Startup()
{
base.Startup(); //调用父类方法用base(不是super)
Console.WriteLine("-------Pad方法-----");
}
}
测试类
class Test
{
static void Main(string[] args)
{
Computer computer = new Computer();
Pad pad = new Pad();
pad.Startup();
Console.ReadLine();
}
}