這篇文章主要講解了“c#中的string是不能修改的嗎”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“c#中的string是不能修改的嗎”吧!
創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于成都網站制作、成都網站建設、外貿營銷網站建設、井陘網絡推廣、微信小程序開發、井陘網絡營銷、井陘企業策劃、井陘品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創新互聯為所有大學生創業者提供井陘建站搭建服務,24小時服務熱線:028-86922220,官方網址:vcdvsql.cn
這個問題,應該不是問題吧!在C#中string是不可修改的,語法都是這么說的。但我今天想變通一種方式將原始的string內容修改,思路如下:
c++:
void editstring(wchar_t * ptr) { wchar_t* pc = ptr; int index = 0; int len = _tcslen(ptr);//因為C#中傳過來的是unicode字符,所以strlen只能==1 while (index < len) { if (*pc != 0) { *pc = *pc + 1; pc++; } index++; } }
c#中:注意:因為c#用的字符串是unicode,比如'a'-->0x00 0x41 ,而不是普通C++中的char,必須要是wchar_t,但我在C#中無法用wchar_t,只能用char
[Dllimport.....] public static unsafe extern editstring(char* ptr); string msg = "abc"; unsafe { fixed(char *pmsg = msg) { editstring(pmsg); } } Console.WriteLine("msg=" + msg);
實驗顯示如下:
msg=bcd
說明實驗成功。
上面做法是使用了fixed語句,那能不能不用fixed達到同樣的目的呢?
C++代碼不用變,只需要變C#代碼:
[DllImport("dllfordebugdemo.dll", EntryPoint = "editstring", CallingConvention = CallingConvention.Cdecl)] public static extern void editstring(IntPtr ptr); string msg = "abc"; unsafe { fixed(char *pmsg = msg) { IntPtr pm = (IntPtr)pmsg; editstring2(pm); } } Console.WriteLine("msg=" + msg);
最終實驗也成功了。
感謝各位的閱讀,以上就是“c#中的string是不能修改的嗎”的內容了,經過本文的學習后,相信大家對c#中的string是不能修改的嗎這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!
網頁題目:c#中的string是不能修改的嗎
鏈接分享:http://vcdvsql.cn/article34/gjiepe.html
成都網站建設公司_創新互聯,為您提供網頁設計公司、靜態網站、網站策劃、動態網站、做網站、App設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯