2011-04-10 47 views
6

La breve pregunta: ¿Es posible crear una cadena de tamaño fijo en C#? sé que en VB es posible declarar algo como esto: str As String * 20Tamaño de cadena fijo en C#

La larga historia: necesito leer un archivo binario que contiene un campo de 20 bytes en una cadena. Leo el contenido del archivo en un objeto (clase). Quiero limitar las cadenas en el objeto en la definición de la clase.

Muchas gracias por su preocupación.

ROI

+0

¿Cómo está leyendo el archivo? – SLaks

+0

Eso solo funciona en VB 6. Tampoco es posible en VB.NET. CLR no es compatible con cadenas de longitud fija. ¿Por qué necesitas limitar el tamaño? Si el archivo que está leyendo tiene solo 20 bytes, esa es la longitud de la cadena resultante. –

+0

No mencioné todo mi problema para limitar el texto de mi pregunta: El archivo es binario y contiene detalles del elemento de menú: Tamaño (largo), BásicoTensión (largo) Básico Ancho del núcleo (largo) Fila (largo), Columnas (largo) , ImagesPath (cadena de 20 bytes de longitud) y LabelsFilePath (también cadena de 20 bytes de longitud). El archivo fue escrito para la aplicación VB6, y necesito convertir los datos para la aplicación C#. – roishabtai

Respuesta

4

Debe crear una propiedad de tipo string que comprueba value.Length en la incubadora y trunca o se produce una excepción.

+0

Entiendo que no es posible declarar directamente una cadena de tamaño fijo en C#? – roishabtai

+0

En realidad, no tiene sentido declarar una cadena de longitud fija. Una cadena es una cadena. ¿Qué estás haciendo? – SLaks

+0

Estoy tratando de extraer el binario creado para la aplicación VB6 al objeto C#. – roishabtai

1

Debe usar 'StringBuilder' para resolver su problema.

+0

StringBuffer es Java, es StringBuilder en C#. – mikel

+0

Sí, tienes razón. Es porque estoy javing en este momento :) – iehrlich

+0

En realidad es StringBuilder tanto en java como en C#. StringBuffer es una versión antigua y sincronizada de StringBuilder. – atamanroman

5

Puede declarar y completar una matriz de caracteres de tamaño fijo, y luego pasarla al constructor de objetos String para hacer la cadena a partir de esa.

var newString = new string(theCharArray);

1

intente utilizar el atributo VBFixedString. Este es un atributo de solo información y no restringe la longitud real de la cadena. Se usa para comunicarse con llamadas API que esperan una cadena de longitud fija estilo VB6. Ver http://msdn.microsoft.com/en-us/library/x14b6s77.aspx

+0

Gracias, pero quiero usar objetos "puros" C# – roishabtai

Cuestiones relacionadas