常州网站建设外包,wordpress文件上传位置,在北京做家教的网站,青岛好的网站制作推广值类型#xff1a;拆箱、装箱 struct是值类型
struct和class的区别
类是引用类型#xff0c;struct是值类型在托管堆上创建类的实例#xff0c;在栈上创建struct实例类实例的赋值#xff0c;赋的是引用地址#xff0c;struct实例的赋值#xff0c;赋的是值类作为参数类…值类型拆箱、装箱 struct是值类型
struct和class的区别
类是引用类型struct是值类型在托管堆上创建类的实例在栈上创建struct实例类实例的赋值赋的是引用地址struct实例的赋值赋的是值类作为参数类型传递传递的是引用地址struct作为参数类型传递传递的是值类没有默认无参构造函数struct有默认无参构造函数类支持继承struct不支持继承类偏向于”面向对象”,用于复杂、大型数据struct偏向于”简单值”比如小于16字节结构简单类的成员很容易赋初值很难给struct类型成员赋初值类的实例只能通过new SomeClass()来创建struct类型的实例既可以通过new SomeStruct()来创建也可以通过SomeStruct myStruct;来创建
// 调用方法
private void Form1_Load(object sender, EventArgs e)
{Dog dog new Dog(5);object objDog dog;Log.v(5\t dog.Power / ((Dog)objDog).Power);// Unbox, modify unboxed value, and discard value((Dog)objDog).SetPower(100);Log.v(100\t dog.Power / ((Dog)objDog).Power - ((Dog)objDog).Power);// Box, modify boxed value, and discard reference to box((IAttack)dog).SetPower(26);Log.v(26\t dog.Power / ((Dog)objDog).Power - ((Dog)dog).Power);// Modify boxed value directly((IAttack)objDog).SetPower(58);Log.v(58\t dog.Power / ((Dog)objDog).Power - ((Dog)objDog).Power);
}
// 需要的类和接口
// Dog 类
public struct Dog : IAttack
{public int Power { get; set; }public Dog(int power){SetPower(power);}public void SetPower(int power){Power power;}
}
// 攻击接口
public interface IAttack
{void SetPower(int power);
}
输出结果
12-29 09:33:46.579 v 5 5/5
12-29 09:33:46.582 v 100 5/5 - 5
12-29 09:33:46.583 v 26 5/5 - 5
12-29 09:33:46.583 v 58 5/58 - 58