前面介紹變數都有基本取值範圍,除了 String 型別外,每種變數在記憶體只佔固定位元組。下面介紹 3 種使用者自訂複雜變數。
定義列舉型別:關鍵字 enum
使用方法:
enum Ename
{
Value1, value2, …………. valueN
}
宣告一個 Ename 型別列舉變數 Ename myenum = Ename.value;。預設列舉型別底層為 int,value1、value2 等值預設從 0 依次遞增 1。也可使用其他型別。範例:
enum Days
{
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
Sunday = 7
}
enum Days : short { }
使用:
Days myday = Days.Friday;
Console.WriteLine("myday is {0} :", myday);
輸出結果如圖:

定義 enum 位置:

列舉底層型別可為 byte、sbyte、long、short、ushort、int、uint、ulong。
結構體定義與使用方法與列舉類似,差別在結構體中所有定義變數都可有自己的值,而列舉變數值只能是列舉所有值其中之一。範例:
struct Cloth // 結構體名稱
{
public int age; // 衣服使用壽命
public string sex; // 適合性別
public string style; // 款式
public double price; // 價格
public double count; // 折扣
}
Cloth mycloth;
mycloth.age = 2;
mycloth.count = 0.98;
mycloth.price = 999.99;
mycloth.sex = "man";
mycloth.style = "長褲";
Console.WriteLine("結構體資料輸出:");
Console.WriteLine("age={0}, sex={1}, style={2}, price={3}, count={4}", mycloth.age, mycloth.sex, mycloth.style, mycloth.price, mycloth.count);
結果:

陣列用來儲存大量型別相同但數值不同資料。例如班級同學資訊中,用字串陣列保存所有同學姓名。
string[] StuNames = new string[5];
StuNames[0] = "國家";
StuNames[1] = "人們";
StuNames[2] = "中國";
StuNames[3] = "漢族";
StuNames[4] = "主席";
foreach (string sName in StuNames)
Console.WriteLine(sName);
輸出結果:

陣列使用包含宣告與初始化。定義陣列時長度為常數,不能用變數表示:如 int[] score = new int[7];int[] score = new int[const Size];或 int[] EnglishScore = { 1, 5, 6, 8, 5, 7, 74 }。陣列存取前必須初始化,若只定義未初始化會出錯。
多維陣列:可依需求定義不同維度,一維、二維較常用,三維以上罕見。例:定義二維陣列表示某班 30 人三門課程成績,double[,] stuScore = new double[30, 3],則 stuScore[1, 2] 表示第 2 位學生第 3 門課程成績。請親自編程體會。