code.club
標題:
C# enum列舉類型使用教學<轉>
[打印本頁]
作者:
2266
時間:
2022-10-11 15:48
標題:
C# enum列舉類型使用教學<轉>
本帖最後由 2266 於 2022-10-11 15:51 編輯
https://a032332852.pixnet.net/bl ... 8%E6%95%99%E5%AD%B8
列舉其實不是必要的東西
但是他可以讓你比較好閱讀
在這我就用遊戲狀態來當作範例
enum
public class Test : MonoBehaviour {
// 列舉遊戲狀態
enum GameStatus
{
GAME_READY, // 遊戲準備
GAME_START, // 遊戲開始
GAME_OVER // 遊戲結束
}
// 宣告你的列舉變數 遊戲狀態
GameStatus gameStatus;
// Use this for initialization
void Start ()
{
// 用switch來判斷你的列舉狀態
// switch不懂可以查閱我的 (3)C# 的教學
switch (gameStatus)
{
case GameStatus.GAME_READY:
Debug.Log("GAME_READY");
break;
case GameStatus.GAME_START:
Debug.Log("GAME_START");
break;
case GameStatus.GAME_OVER:
Debug.Log("GAME_OVER");
break;
}
}
}
複製代碼
哪這邊也補充一下一些重點
其實如果你看過我的switch的教學
你會發現 列舉跟他是一樣的
只是如果你都用int來表示 久了以後
你回來看你的程式 你會被這數字搞瘋
1是代表什麼 ?? 2是什麼
這就是列舉的好處 方便我們閱讀 一看就知道是什麼樣的狀態
那列舉其實也有int值表示 程式中都會從0開始 (像是索引值)
但是我們是可以修改他的
// 列舉遊戲狀態 (預設的int值)
enum GameStatus
{
GAME_READY, // int值為0
GAME_START, // int值為1
GAME_OVER // int值為2
}
// 列舉遊戲狀態 (修改int值)
enum GameStatus
{
GAME_READY = 0, // 遊戲準備
GAME_START = 2, // 遊戲開始
GAME_OVER = 1 // 遊戲結束
}
複製代碼
你可以將你的列舉印出Log來看看 前面用(int)將他轉型
Debug.Log((int)GameStatus.GAME_START);
複製代碼
你會發現你的Start已經變為2了
那他的規則就是
如果你沒修改他 他就依照上一個的int值來+1
而如是以下的狀態
// 列舉遊戲狀態
enum GameStatus
{
GAME_READY = 0, // 遊戲準備
GAME_START, // 遊戲開始
GAME_OVER = 1, // 遊戲結束
MAX
}
// GAME_READY = 0, = 0 (固定值)
// GAME_START, = 1 (前一個+1)
// GAME_OVER = 1, = 1 (固定值)
// MAX = 2 (前一個+1)
複製代碼
那在這邊我會講int轉型是因為
同樣的我們也可以將int轉為列舉
Debug.Log((GameStatus)2);
複製代碼
這時候的int數就會變成列舉索引2的MAX
在某些情況下 你會用數字來代表
你就可以將這數字轉成你的列舉狀態
歡迎光臨 code.club (https://code.club/)
Powered by Discuz! X3.2