學習筆記之C#常量、列舉、結構、索引器
一、常量(Const)
語法:const 常量型別 常量名 = 常量值;//常量只有在初始化的時候可以賦值
二、列舉(Enum)
定義一種型別,並且在定義時我們要指定這個型別的所有值
(一)語法
enum 自己起的型別名稱{值1,值2,值3...值n};
如:
enum 自己起的型別名稱{值1,值2,值3...值n};
如:enum Gender
{
男,
女
}
//使用時如下
Gender sex;
sex = Gender.男;
(二)注意
1.列舉的定義,一般和定義類在同一個級別。這樣,在同一個名稱空間下的所有類都可以使用這個列舉
2.定義列舉時,列舉的值不能用int型別
3.列舉的變數都可以強制轉換成int
4.可以在列舉中的值後面加編號,如
enum Gender
{
男=1;
女=2;
}
(三)作用
1.限制使用者不能隨意賦值,只能在列舉的值中選擇
2.不需要死記每一個值,只需要選擇相應的值
(四)字串轉換為列舉
(自己定義的列舉型別)(Enum.Parse(typeof(自己定義的列舉型別),"待轉換的字串"));
如:(Gender)(Enum.Parse(typeof(Gender),s));
三、結構(Strut)
結構是值型別,常用來封裝小型變數組
(一)語法
訪問修飾符 struct 結構名
{
定義結構成員
}
struct Rectangle { public int length; public int width; public int[] arr; public Rectangle(int length, int width,int[] arr) { this.length = length; this.width = width; this.arr = arr; } public int Area()//計算面積方法 { return length * width; } public int this[int index] { get { if (index < arr.Length - 1) { return arr[index]; } else { throw new Exception("索引器長度溢位!"); } } }
(二)特點
1.結構為值型別,儲存在棧中,所以結構的初始化可以不用new關鍵字
2.結構讀取的效率高,但是容量小
3.結構中的非靜態欄位不能在結構中被初始化
4.結構可以有索引器、方法、構造引數,但是若為結構過載建構函式,則在建構函式中為所有欄位初始化
5.結構中的欄位一般可以定義為public
(二)作用
1.解決變數重重複的問題
2.變數名不會記混
四、計算機單位
1.計算機中最小單位叫“位”(bit,位元),表示一個二進位制位
2.一個一個處理二進位制位太慢,表示的資訊太小,於是把8個二進位制位分成一組,那麼8個二進位制位叫做位元組(Byte),計算機能夠處理的最小單位。(0-255,255在十六進位制中為FF)
1B=8b
1KB=1024B
1MB=1024KB
bps(bit per second)網路頻寬
五、索引器
允許類或結構的例項按照與陣列相同的方式進行索引
(一)宣告語法
public int this[引數列表]{get{ };set{ };}
(二)注意
1.索引器可以被過載
2.引數列表可以為多項,多種型別
3.返回值型別不限
class Sample
{
private int[] arr=new int[100];
public int this[int index]
{
get
{
return arr[index];
}
set
{
arr[index] = value;
}
}
}
class Program
{
static void Main(string[] args)
{
Sample s1 = new Sample();
int i = s1[0];
Console.WriteLine(i);
Console.ReadKey();
}
}