c#高階之路——5. c#陣列與集合
基礎:
c#的資料組合分為陣列和集合兩種。
陣列一維陣列和多維陣列
集合普通集合:泛型集合,雜湊表,字典表,特殊集合等;
特殊集合:佇列和堆疊等
陣列一維陣列
int 陣列名 = new int[2]
方括號裡是陣列的長度
多維陣列
int 陣列2 = new int[2,3]
方括號裡數字表示2維陣列 每個維度的陣列長度是3
集合注意:集合需要在**開頭加 using system.collections;
普通集合
arraylist
不限制型別 不限定長度 不能更改索引值 只能是0123
list
限制資料型別 不限制長度 不能更改索引值
hashtable
沒有順序的概念 不限制型別 不限制長度 不限制索引值
dictionary
限制型別 限制索引值 不限制長度
注意:arraylist集合對資料型別沒有要求,因為arraylist集合中儲存的資料型別默為object型別,其它型別與object型別進行轉換時發生「拆箱裝箱」操作,
而list集合在宣告集合時確定了資料型別,所以list集合與arraylist集合相比相對安全。
高階:
arraylist
新增資料時不需要規定型別
arraylist 集合1=new arraylisr();
集合1.add("abc"); 新增字串
集合1.add(123); 新增數字
集合1.add(true); 新增布林型資料
集合1.remove(123) 移除資料
集合1.clear() 清空集合
集合1.contains("123") 檢查集合是否包含該資料
集合1.insert(0,123) 在索引值為0的位置插入123資料
arraylist示例
static void main(string args)
arraylist list = new arraylist();
list.add(true);
list.add(1);
list.add("張三");
list.addrange(new int );
list.addrange(list);
清除反轉
new string );//指定位置插入集合
if (list.contains("張三"))//判斷包含指定元素
console.writeline("已經有這個小哥哥啦~");
for (int i = 0; i < list.count; i++)
console.writeline(list[i]);
console.readkey();
泛型集合
list
限制資料型別 不限制長度 不能更改索引值
list《資料型別》 集合2 = new list 《資料型別》();
新建泛型集合
集合2.add("資料")
新增資料時需要規定型別
list示例
static void main(string args)
listlt = new list();
lt.add(1);
lt.add(2);
lt.add(3);
lt.addrange(new int );
for (int i = 0; i < lt.count; i++)
console.writeline(lt[i]);
console.readkey();
雜湊表hashtable
沒有順序的概念 不限制型別 不限制長度 不限制索引值
hashtale 集合3 = new hashtable();
集合3.add(索引值,資料)
集合3.values集合的資料值 //配合遍歷使用輸出資料,否則輸出物件型別
集合3.keys 集合的索引值
新增資料時需要指定索引值
索引值和資料可以是任意資料型別
hashtable示例
static void main(string args)
hashtable hash = new hashtable();
hash.add(1, "張三");
hash.add(2, true);
hash.add(false, "錯誤的~");
foreach (var h in hash.keys)
console.writeline("鍵是,值是", h, hash[h]);
console.readkey();
字典表dictionary
限制型別限制索引值 不限制長度
dictionary《索引值資料型別,資料型別》 集合4 = new dictionary《索引值資料型別,資料型別》();集合4.add(索引值,資料)
新增的索引值和資料必須符合建表時規定的型別
static void main(string args)
dictionarydir = new dictionary();
dir.add(1, "張三");
dir.add(2, "李四");
dir[1] = "乾掉你";
foreach (keyvaluepairkv in dir)
console.writeline("鍵是,值是", kv.key, kv.value);
console.readkey();
佇列queue
先進先出
queue 佇列 = new queue(); 新建佇列
佇列.enqueue("資料") 新增資料
佇列.dequeue() 移除最先新增的資料
堆疊stack
先進後出
stack 堆疊 = new stack(); 新建堆疊
堆疊.push("資料") 新增資料
堆疊.pop(); 移除最後新增的資料
迴圈遍歷陣列
for (int i=0;i《陣列1.count;i++)
console.write(
陣列1[i].tostring() + 陣列1[i].gettype().tostring();
陣列1.count 陣列長度
gettype()獲取資料型別
//這種迴圈方式只能用於索引值為數字的型別
foreach(var x in 陣列1)
console.write(
陣列1[i].tostring() + 陣列1[i].gettype().tostring();
//這個迴圈可以遍歷任何型別的陣列
參考:
5 C 集合與陣列
也就是陣列。具體表示方法是 資料型別 維數 陣列名 new 資料型別 陣列有很多的優點,比如說陣列在記憶體中是連續儲存的,所以它的索引速度是非常的快,而且賦值與修改元素也很簡單,比如 宣告乙個一維陣列 intarray1 new int 3 初始化乙個一維陣列 intarray1 new int 3...
5 c語言陣列
其中包括 冒泡 高精度加法 統計不相同的數字個數 陣列 陣列元素倒序輸出 go 1 include 234 5功能 冒泡67 6功能 高精度加法78 9void main 10 12int b m 13int c m 14char s m 1 15 int i 0 16 int n1 0 17 in...
5C 暴庫漏洞
的unicode是 5c,主要就是暴庫漏洞 那麼,我看到下面四種情況 1,直接暴庫,解決方法在conn.asp中加入on error resume next duoluo.webdream dlog 5cshowlog.asp?cat id 16 log id 444 2,不顯示任何資訊,原因已打入...