visual tipos studio sharp saco rutinas que principiantes practica pegarle objects maneja lenguajes integrados golpes golpear gimnasia español entrenamiento ejercicios ejercicio datos costal como boxeo c# arrays object

tipos - Forma correcta de boxeo bool[] en el objeto[] en C#



variables c# español (3)

Parece que solo necesitas guardar cada valor, ¿verdad? Eso es tan simple como:

object[] objectArray = boolArray.Select(b => (object) b).ToArray();

O incluso:

object[] objectArray = boolArray.Cast<object>().ToArray();

(Como Cast realizará operaciones de boxeo / desempaquetado).

O un poco más eficiente en términos de conocer el tamaño correcto para empezar:

object[] objectArray = Array.ConvertAll(boolArray, b => (object) b);

Alternativamente, cambie sus API para no requerir un object[] para comenzar. Considere usar métodos / tipos genéricos en su lugar.

EDITAR: Para evitar el boxeo cada vez, puede escribir fácilmente su propia clase de extensión similar al marco que mostró nmclean:

public static class BooleanBoxExtensions { private static readonly object BoxedTrue = true; private static readonly object BoxedFalse = false; public static object BoxCheaply(this bool value) { return value ? BoxedTrue : BoxedFalse; } }

Entonces:

object[] objectArray = Array.ConvertAll(boolArray, b => b.BoxCheaply());

O:

object[] objectArray = boolArray.Select(BooleanBoxExtensions.BoxCheaply) .ToArray();

Quiero encontrar el mejor enfoque para convertir bool[] en object[] en C # .NET 4.0.
Ahora tengo estas variables:

object[] objectArray = new object [] { true, false, true }; string[] stringArray = new string[] { "true", "false", "true" }; bool[] boolArray = new bool[] { true, false, true };

Todos son creados bien. Para ''tipos claros'', suc como bool y object , el boxing funciona bien ( object o = true; ). Pero en este caso puedo hacer la conversión solo de una matriz de cadenas a una matriz de objetos, pero no de una matriz booleana:

objectArray = stringArray; // OK objectArray = boolArray; // WRONG Cannot implicitly convert bool[] to object[]

Además, en algunos métodos estoy enviando una lista de matrices de objetos. Como en el caso anterior, puedo hacer esto (conversión) para cadena, pero no para una matriz booleana:

List<object[]> testList; testList = new List<object[]>() { objectArray }; // OK testList = new List<object[]>() { stringArray }; // OK testList = new List<object[]>() { boolArray }; // WRONG - I can not add bool[] into object[]

A partir de algunos métodos, tengo una matriz booleana con muchos elementos dentro ... y el último método, después de todos los cálculos, devuelve una matriz de objetos como resultado (a veces debe devolver otros tipos y no quiero dividirlo en múltiples métodos).

Considerando que no puedo usar return_object_array = boolean_array . ¿Cuál es el mejor método para hacer esto? ¿Se realiza un bucle sobre todos los valores en una matriz booleana y se almacena en una matriz de objetos de la forma más rápida?

¿Cuál es el enfoque mejor / más rápido / más correcto para hacer esto?
Nota: Este método está escrito en .NET 4.0, pero si conoce una mejor solución para .NET 4.5 me gustaría saberlo.


Cast<T> método Cast<T> realiza el boxeo.

var castedValues = boolArray.Cast<object>(); objectArray = castedValues.ToArray();


bool[] boolArray = { true, false, true }; var objArray = Array.ConvertAll(boolArray, x => (object)x);