您好,登錄后才能下訂單哦!
類和結構是 .NET Framework 中的常規類型系統的兩種基本構造。 兩者在本質上都屬于數據結構。封裝著一組總體作為一個邏輯單位的數據和行為。 數據和行為是該類或結構的“成員”,它們包括各自的方法、屬性和事件等
與類不同的是,結構體用struct 修飾;結構體中的實例字段不能自定義默認值,而類可以,編譯器會隱式的給出結構體和類的默認構造函數,但是結構體的默認構造不能顯示給出,不然編譯器會報錯,當類有自定義的構造函數時,默認構造會被隱藏,要想使用默認構造,必須顯示給出;結構體的自定義構造函數必須初始化所有的實例字段和未初始化的屬性,而類不是.
類在傳遞的時候,傳遞的內容是位于托管內存中的位置,結構體在傳遞的時候,傳遞的內容是位于程序堆棧區的內容。當類的傳遞對象修改時,將同時修改源對象,而結構體的傳遞對象修改時,不會對源對象產生影響。
這是我總結的結構與類的區別
在 C# 中,結構體是值類型數據結構。它使得一個單一變量可以存儲各種數據類型的相關數據。struct 關鍵字用于創建結構體。
定義一個玩家的結構:
public struct StructHero
{
//玩家名字
public string HeroName;
//原始生命值
public int OriginalBlood;
//***力
public int AttackPower;
//防御力
public int DefendPower;
//玩家的圖片
public Image Image;
//原始位置
public Point OriginalLocation;
//當前位置
public Point CurrentLocation;
// 大小
public Size Size;
public void Move(StructMonster monster)
{
//移動到怪物左下角
this.CurrentLocation = new Point(
monster.OriginalLocation.X,
monster.OriginalLocation.Y + monster.Size.Height);
}
public void Move()
{
//返回是將原始位置設為當前位置
this.CurrentLocation = this.OriginalLocation;
}
}
定義一個怪物結構:
public struct StructMonster
{
//怪物名字
public string MonsterName;
//原始生命值
public int OriginalBlood;
//當前生命值
public int CurrentBlood;
//***力
public int AttackPower;
//防御力
public int DefendPower;
//怪物的圖片
public Image Image;
//原始位置
public Point OriginalLocation;
//當前位置
public Point CurrentLocation;
// 大小
public Size Size;
public void Move(StructHero hero)
{
//移動到怪物左下角
this.CurrentLocation = new Point(
hero.OriginalLocation.X,
hero.OriginalLocation.Y - hero.Size.Height);
}
public void Move()
{
//返回是將原始位置設為當前位置
this.CurrentLocation = this.OriginalLocation;
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。