empty array c# arrays

array isnullorempty c#



If(Array.Length== 0) (12)

Como otros ya han sugerido, es probable que obtenga una NullReferenceException que se puede evitar verificando primero si la referencia es null . Sin embargo, debe preguntarse si ese cheque está realmente justificado. ¿Lo estarías haciendo porque la referencia realmente podría ser null y ser null tiene un significado especial en tu código? ¿O lo estarías haciendo para encubrir un error? La naturaleza de la pregunta me lleva a creer que sería la última. En ese caso, realmente necesita examinar el código en profundidad y averiguar por qué esa referencia no se inicializó correctamente en primer lugar.

Si una matriz está vacía, parece que no puede verificar su longitud con ".length". ¿Cuál es la mejor manera de verificar si una matriz está vacía?


Esta es la mejor manera. Tenga en cuenta que Array es un objeto en NET, por lo que debe comprobar antes si es nulo.


Jon Skeet respondió correctamente. Solo recuerde que el orden de la prueba en "IF" es importante. Compruebe el valor nulo antes de la longitud. También prefiero poner el nulo en el lado izquierdo de la igualdad ... solo un hábito que obtuve de Java que hizo que el código fuera más eficiente y rápido ... No creo que hoy en día sea importante en muchas aplicaciones, pero es una buena práctica.

if (null == array || array.Length == 0)


Puede usar .Length == 0 si la longitud está vacía y la matriz existe, pero ¿está seguro de que no es nula?


Puedes usar

if (array == null || array.Length == 0)

O

if (!(array != null && array.Length >= 0))

¡¡¡¡¡NOTA!!!!! Para asegurar que c # implementará el cortocircuito correctamente; tienes que comparar ese objeto con NULL antes de ir a la comparación de los niños del objeto.


Sí, por seguridad, probablemente lo haría:

if(array == null || array.Length == 0)


Si la array es null , intenta eliminar la array.Length La array.Length arrojará una NullReferenceException . Si su código considera que null es un valor no válido para la array , debe rechazarlo y culpar a la persona que llama. Uno de esos patrones es lanzar ArgumentNullException :

void MyMethod(string[] array) { if (array == null) throw new ArgumentNullException(nameof(array)); if (array.Length > 0) { // Do something with array… } }

Si desea aceptar una matriz null como una indicación para no hacer algo o como un parámetro opcional, simplemente no puede acceder a ella si es nula:

void MyMethod(string[] array) { if (array != null) { // Do something with array here… } }

Si desea evitar tocar la array cuando es null o tiene longitud cero, entonces puede verificar ambas al mismo tiempo con el operador nulo coalescente de C # -6 .

void MyMethod(string[] array) { if (array?.Length > 0) { // Do something with array… } }

Revisión de longitud superflua

Parece extraño que estés tratando la matriz vacía como un caso especial. En muchos casos, si usted, por ejemplo, simplemente recorrera la matriz de todos modos, no es necesario tratar la matriz vacía como un caso especial. foreach (var elem in array) {«body»} simplemente nunca ejecutará «body» cuando array.Length es 0 . Si estás tratando array == null || array.Length == 0 array == null || array.Length == 0 especialmente para, por ejemplo, mejorar el rendimiento, puede considerar dejar un comentario para la posteridad. De lo contrario, la verificación de Length == 0 parece superflua.

El código superfluo hace que la comprensión de un programa sea más difícil porque las personas que leen el código probablemente suponen que cada línea es necesaria para resolver algún problema o lograr la corrección. Si incluye un código innecesario, los lectores pasarán una eternidad tratando de descubrir por qué esa línea es o fue necesaria antes de eliminarla ;-).


Su prueba sugerida está bien, siempre y cuando la matriz esté inicializada ...

Martín.


Usted puede verificar absolutamente la longitud de una matriz vacía . Sin embargo, si intenta hacer eso en una referencia nula, obtendrá una excepción. Sospecho que es con lo que te estás metiendo. Puedes lidiar con ambos sin embargo:

if (array == null || array.Length == 0)

Si esa no es la causa, proporcione un programa breve pero completo que demuestre el problema. Si esa fue la causa, vale la pena tomarse un momento para asegurarte de que entiendes las referencias nulas frente a colecciones / cadenas "vacías" / lo que sea.


comprueba si la matriz es nula primero para evitar una excepción de puntero nulo

lógica en cualquier idioma: si array es nulo o está vacío: do ....


if (array.length> 0)


te refieres vacío o nulo, dos cosas diferentes,

si la matriz se instancia pero está vacía, entonces la longitud es correcta, si no se ha instanciado, prueba vs nulo