1. 值类型与引用类型
结构是值类型:值类型在堆栈上分配地址。类是引用类型:引用类型在堆上分配地址。
2.继承性
结构:不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,但结构是隐式的sealed。
类:完全可扩展的,除非显示的声明sealed 否则类可以继承其他类和接口,自身也能被继承。
注:虽然结构不能被继承 可是结构能够继承接口,语法和类继承接口一样。
3.内部结构
结构:没有默认的构造函数,但是可以添加构造函数/没有析构函数/没有 abstract 和 sealed/不能有protected 修饰/可以不使用new 初始,在结构中初始化实例字段是错误
类:有默认的构造函数 /有析构函/可以使用 abstract 和 sealed修饰符声明类/有protected 修饰符/必须使用new 初始化
以下有两个实例代码分别说明结构的初始化和他只能继承接口
1.结构初始化
//错误代码
public struct Person
{
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
}
class Program
{
static void Main(string[] args)
{
Person p;
p.Age = 10;
}
}
//正确代码
public struct Person
{
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
public Person(int age)
{
this.age = age;
}
}
class Program
{
static void Main(string[] args)
{
Person p = new Person(10);
}
}
2.关于结构可继承接口的实例
interface IImage
{
void Paint();
}
struct Picture : IImage
{
public void Paint()
{
// painting code goes here
}
private int x, y, z;
// other struct members
}
|