tengo una estructura (.NET 3.5):¿Asignar una lista de valores a una estructura en C#?
struct ColumnHeadings
{
public string Name ;
public int Width ;
} ;
Y cuando trato de asignar una lista de valores para que struct consigo un 'no se puede convertir implícitamente el tipo string/int para ...':
private void doSomething()
{
ColumnHeadings[,] ch = new ColumnHeadings[,]{{"column1",100},
{"column2",100},{"column3",100}};
}
¿Pueden los valores de estructura asignarse de la misma manera que una matriz multidimensional? ¿O tengo que asignar los valores usando ?:
ch.Name = "column 1";
ACTUALIZACIÓN:
Gracias a una excelente respuesta de Marc la solución correcta es:
Struct:
struct ColumnHeadings
{
private readonly string name;
private readonly int width;
public string Name { get { return name; } }
public int Width { get { return width; } }
public ColumnHeadings(string name, int width)
{
this.name = name;
this.width = width;
}
}
Luego, en el método:
var ch = new[]{new ColumnHeadings("column1",100),
new ColumnHeadings("column2",100),
new ColumnHeadings("column3",100)};
Y el link explica por qué las estructuras de mutuable no son una buena idea.
Por curiosidad, ¿por qué es 'ColumnHeadings' de dos dimensiones? –
@ C. Ross - es 2D debido a intentar combinar matrices/estructuras ... :) –
una matriz 2D debe contener datos homegenus; esto es realmente una matriz de 1 dimensión donde cada elemento tiene 2 valores - muy diferente –