其實可以寫一個method就完成的
並且透過dynamic的使用 基本上從一維到多維陣列都可以通吃
但有鑑於一般最多只會使用到三維陣列
且三維陣列就相當複雜了XD
所以小弟這邊寫的方法只涵蓋了一維到三維陣列的部分
http://nopaste.csie.org/b3772
有寫上註解:p
程式預設是直接Console.WriteLine輸出找到的索引值
並且程式碼最前面是一個可當作範例使用的2x3x4三維陣列
原po可以視需要將Console.WriteLine改成其他方式呈現:p
有兩個重點如下:
1.這個方法所接收的參數是dynamic array
不可以是var 也不可以是泛型 也不可以是object
dynamic的資料型別與一般的差別最大在於dynamic是在執行階段才決定資料型別的
所以這個方法才可以無論一維 二維 三維陣列皆可接收
2.當多維陣列Cast成有實作IList<T>(表示可透過索引進行存取)
與IEnumerable<T>介面的泛型集合時
陣列中元素的索引會從多維→一維填入集合
即假設有個陣列是[2, 2] 各元素的索引為[0, 0] [0, 1] [1, 0] [1, 1]
則當Cast成List<T>時
位於[0, 0]元素的新索引會是[0]
[0, 1]→[1]
[1, 0]→[2]
[1, 1]→[3]
參考看看吧:)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.115.97.252
※ 編輯: Deadshot465 來自: 58.115.97.252 (11/21 03:26)