一.类与结构的示例比较
结构示例
public struct Person
{
string Name;
int height;
int weight
public bool overWeight()
{
//implement something
}
}
类示例
public class TestTime
{
int hours;
int minutes;
int seconds;
public void passtime()
{
//implementation of behavior
}
}
调用过程
public class Test
{
public static ovid Main
{
Person Myperson=new Person //声明结构
TestTime Mytime=New TestTime //声明类
}
}
从上面的例子中我们可以看到类的声明和结构的声明非常类似只是限定符后面是 struct 还是 class 的区别而且使用时定义新的结构和定义新的类的方法也非常类似那么类和结构的具体区别是什么呢?
二 类与结构的差别
值类型与引用类型
结构是值类型值类型在堆栈上分配地址所有的基类型都是结构类型例如int 对应Systemint 结构string 对应 systemstring 结构 通过使用结构可以创建更多的值类型
类是引用类型引用类型在堆上分配地址
堆栈的执行效率要比堆的执行效率高可是堆栈的资源有限不适合处理大的逻辑复杂的对象所以结构处理作为基类型对待的小对象而类处理某个商业逻辑
因为结构是值类型所以结构之间的赋值可以创建新的结构而类是引用类型类之间的赋值只是复制引用
注
虽然结构与类的类型不一样可是他们的基类型都是对象(object)c#中所有类型的基类型都是object
虽然结构的初始化也使用了New 操作符可是结构对象依然分配在堆栈上而不是堆上如果不使用新建(new)那么在初始化所有字段之前字段将保持未赋值状态且对象不可用
[] []