2011-04-10 121 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