歡迎光臨 pure C# 技術社群. 登入註冊

pure C# 技術社群

- Microsoft .NET Framework 相關技術非官方討論社群 -

C# 好像沒有固定長度的字串類別

  • 1
  • [第1/1頁 共6項]
#1

C# 好像沒有固定長度的字串類別

  • a
 0.0 (0 人評價)
用C#建立字串都是用
string str = "abc";
string str = new string();
但是好像沒辦法可以直接宣告一個 1024 長度的固定字串 Why?

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息


贊助商連結

#2

Re: C# 好像沒有固定長度的字串類別

  • a
 0.0 (0 人評價)
.NET的字串是初始化後就無法更改的物件,所以在每次內容變更的時候,是先產生新的字串物件再把參考轉向新物件,這樣的情況下,固定長度的字串似乎沒有什麼作用@@

如果要使用可重覆使用的記憶體,Marshal類別有提供產生非授管控的記憶體的方法,或許這個可以提供你想要的功能。

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息

#3

Re: C# 好像沒有固定長度的字串類別

  • a
 0.0 (0 人評價)
我大蓋有些了解了
因為有些COM+的函式會要求傳入一個固定長度的字串
然後會在這個字串中填值並且傳回有點像是字串的buffer
像這種情況就需要先宣告一個固定長度的字串

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息

#4

Re: C# 好像沒有固定長度的字串類別

  • a
 0.0 (0 人評價)
請不要傳給非受管控程式受管控的記憶體,這樣子你會看到沒有權限讀寫記憶體的錯誤,
透過Interop應該可以直接傳遞string給非受管控程式,
如果這個方法不行的話,可以利用API來產生共享記憶體,利用共享記憶體來傳送受管控程式和非受管控程式之間的資料。

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息

#5

Re: C# 好像沒有固定長度的字串類別

  • a
 0.0 (0 人評價)
雖然沒有真正固定長度的字串
還是可用變通的方法

string str = new String(' ', 1024);

這樣就有一個 1024長度的空白字串
把這個字串丟給COM+處理就行了

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息

#6

Re: C# 好像沒有固定長度的字串類別

  • a
 0.0 (0 人評價)
string 的PadLeft()跟備PadRight()都可以用來模擬固定長度字串

白天很黄很暴力,晚上很傻很天真
  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息
  • 1
  • [第1/1頁 共6項]