生活随笔
收集整理的這篇文章主要介紹了
C# struct 装箱拆箱例子
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
值類型:拆箱、裝箱
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 = dogLog
.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)
}
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
總結
以上是生活随笔為你收集整理的C# struct 装箱拆箱例子的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。