[問題] 取得byte陣列的指標?

看板C_Sharp (C#)作者 (Tomex Ou)時間13年前 (2011/10/27 09:52), 編輯推噓0(008)
留言8則, 2人參與, 最新討論串1/1
在.NET裏,byte[] bb = new byte[] { 1, 2, 3, 4, 5}; 我想要取得bb陣列第3個開始的陣列指標名稱,如: byte[] b3 = &bb[2]; // 沒這種語法 請問有人知道該如何取得嗎? 一個很長的陣列, 不想讓user得記住第幾個開始才是該資料的位置 想在物件包裝時能有像指標一樣取得一個別名 讓user能直接操作該子陣列... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.250.105.59 ※ 編輯: tomex 來自: 111.250.105.59 (10/27 09:56)

10/27 10:03, , 1F
其實c#有提供fixed{ *p }來暫時性操作該陣列但我想長存保存
10/27 10:03, 1F

10/27 12:28, , 2F
10/27 12:28, 2F

10/27 12:28, , 3F
但是離開fixed了...我不知道會不會發生什麼事情XD
10/27 12:28, 3F

10/27 13:10, , 4F
頻繁使用fixed也會增加很大的耗能損耗。
10/27 13:10, 4F

10/27 13:11, , 5F
目前能把該位置轉成IntPtr,但轉回來時必須Copy,就失了原意
10/27 13:11, 5F

10/28 01:16, , 6F
Marshal.AllocHGlobal轉成指標操作呢? 不需fixed跟copy了
10/28 01:16, 6F

10/28 01:17, , 7F
要記得再轉回IntPtr用Marshal.FreeHGlobal釋放
10/28 01:17, 7F

10/28 02:09, , 8F
我不是要操作,而是想在包裝物件時提供一個別名,user簡化用
10/28 02:09, 8F
文章代碼(AID): #1EgBbMiv (C_Sharp)
文章代碼(AID): #1EgBbMiv (C_Sharp)