2011-04-10 79 views
6

簡短問題: 是否可以在C#中創建固定大小的字符串? 我知道在VB中可能聲明如下:str AS string * 20C#中的固定字符串大小#

長篇小說: 我需要讀取包含20字節字段的二進制文件到字符串中。我將文件的內容讀入對象(類)。我想限制類定義中的對象中的字符串。

非常感謝您的關注。

ROI

+0

如何閱讀文件? – SLaks 2011-04-10 13:14:25

+0

這隻適用於VB 6.它也不可能在VB.NET中。 CLR不支持固定長度的字符串。爲什麼你需要限制尺寸?如果您正在閱讀的文件只有20個字節,那麼結果字符串將會是多長時間。 – 2011-04-10 13:22:57

+0

我沒有提到我的問題,爲了限制我的問題的文本:該文件是包含菜單項的詳細信息的二進制:大小(長),BasicButtonHeight(長)BasicBurronWidth(長)行(長),列(長) ,ImagesPath(字符串20字節長)和LabelsFilePath(也是20字節長的字符串)。該文件是爲VB6應用編寫的,我需要爲C#應用程序轉換數據。 – roishabtai 2011-04-10 13:35:20

回答

4

您應該創建string型,在二傳手檢查value.Length和截斷,或拋出一個異常的屬性。

+0

我明白,不可能直接在C#中聲明一個固定大小的字符串? – roishabtai 2011-04-10 13:29:46

+0

聲明一個固定長度的字符串實際上沒有意義。一個字符串是一個字符串。你在做什麼? – SLaks 2011-04-10 13:33:47

+0

我試圖提取二進制文件爲VB6應用程序創建到C#對象。 – roishabtai 2011-04-10 13:38:22

1

您應該使用'StringBuilder'解決您的問題。

+0

StringBuffer是Java,它是C#中的StringBuilder。 – mikel 2011-04-10 13:20:20

+0

是的,你是對的。這是因爲我現在正在琢磨:) – iehrlich 2011-04-10 13:21:12

+0

其實它的StringBuilder同時在java和c#中。 StringBuffer是javas老,StringBuilder的同步版本。 – atamanroman 2011-04-10 13:36:08

5

您可以聲明並填充一個固定大小的char數組,然後將其傳遞給String對象構造函數以從中創建字符串。

var newString = new string(theCharArray);

1

嘗試使用VBFixedString屬性。這是一個僅限信息的屬性,並不限制字符串的實際長度。它用於與需要VB6樣式固定長度字符串的API調用進行通信。請參閱http://msdn.microsoft.com/en-us/library/x14b6s77.aspx

+0

謝謝 - 但我想使用「純」的C#對象 – roishabtai 2011-04-10 14:30:41

相關問題