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?If (Array.Length == 0)
Respuesta
Puede verificar absolutamente longitud de la 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. Puede hacer frente a ambos aunque:
if (array == null || array.Length == 0)
Si esa no es la causa, proporcione un programa breve pero completo que demuestre el problema. Si ese fue la causa, vale la pena tomarse un momento para asegurarse de que comprende referencias nulas frente a colecciones/cadenas "vacías"/lo que sea.
Sí, por la seguridad que probablemente hago:
if(array == null || array.Length == 0)
Puede utilizar .Length
== 0 si la longitud está vacío y existe la matriz, pero ¿estás seguro de que no es nula?
Esta es la mejor manera. Tenga en cuenta que Array es un objeto en NET, por lo que debe comprobar antes si es nulo.
Qué quiere decir vacía o nula, dos cosas diferentes,
si la matriz se crea una instancia, pero vacía, entonces la longitud es correcta, si no se ha creado una instancia luego probar vs nula
Su análisis propuesto es bien, siempre que la matriz esté inicializada ...
Martin.
Como otros ya han sugerido, es probable que obtenga un 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 siendo 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.
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.
si (null == matriz || Array.length == 0)
si (Array.length> 0)
por lo menos podrías decir por qué lo detuviste ... qué pasa con ¿esta? – Wills
Esto dará como resultado una excepción de referencia nula si "matriz" es nula. – computerGuyCJ
por un lado, su estuche está apagado; esto no es válido C# como está escrito –
Puede utilizar
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.
de verificación si la matriz es nulo primero para que se evitaría una excepción de puntero nulo
lógica en cualquier idioma: si la matriz es nulo o está vacía: hacer ....
Si array
es null
, tratando de eliminar array.Length
lanzará un NullReferenceException
. Si su código considera que null
es un valor no válido para array
, debe rechazarlo y culpar a la persona que llama. Uno de estos 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 de no hacer algo o como un parámetro opcional, es posible que simplemente no acceder a ella si es nulo:
void MyMethod(string[] array)
{
if (array != null)
{
// Do something with array here…
}
}
Si desea evitar tocar array
cuando es null
o tiene longitud cero, puede verificar ambos al mismo tiempo con C#-6’s null coalescing operator.
void MyMethod(string[] array)
{
if (array?.Length > 0)
{
// Do something with array…
}
}
superfluo Duración Fecha
Parece extraño que está 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á tratando array == null || array.Length == 0
especialmente para, por ejemplo, mejorar el rendimiento, puede considerar dejar un comentario para la posteridad. De lo contrario, el cheque para Length == 0
parece superfluo.
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 ;-).
- 1. Diferencia entre Array.length = 0 y Array = []?
- 2. #if 0 como definen
- 3. ¿Puede array.length estar por debajo de 0 en Javascript?
- 4. Deshabilitar "if (0)" eliminación en gcc
- 5. Javascript navegador Peculiaridades - Array.length
- 6. String.length() vs Array.length
- 7. Array.length vs Array.Count
- 8. ¿Cuál es el costo de llamar Array.length
- 9. ¿Por qué usar #if 0 para comentar en bloque?
- 10. MySQL IF NOT NULL, luego mostrar 1, else mostrar 0
- 11. ¿Qué hace exactamente un bloque #if 0 ..... #endif?
- 12. ¿Es estándar para #if suponer constantes simbólicas indefinidas como 0?
- 13. Ejecutando if @@ rowcount> 0 resetea @@ rowcount a 0. ¿Por qué?
- 14. if {} en if: endif
- 15. 0 + 0 + 0 ... + 0! = 0
- 16. Es costoso hacer array.length o list.count en un bucle
- 17. if..else vs if() {return}
- 18. Sentencias Bash script if if
- 19. sobre android Drawable getBounds return Rect (0, 0 - 0, 0)
- 20. ¿Cuál es la diferencia entre Array.GetLength() y Array.Length?
- 21. ¿Por qué la matriz de Ruby [array.length, count] devuelve []?
- 22. Haskell IF
- 23. (objeto) == 0 (objeto) 0
- 24. If(), else if() alternative in C++ (Is this AI?)
- 25. Esta instrucción if no debe detectar 0; solo cadenas vacías o nulas
- 26. if (0 == '%') echo "WTF, Php, ¿por qué no puedes comparar las cosas sanamente?"
- 27. Awk if else issues
- 28. PHP: if (! $ Val) VS if (vacío ($ val)). Hay alguna diferencia?
- 29. Analizando el algoritmo if-else if statement
- 30. if-modified-since vs if-none-match
¿En qué situación tendría una matriz .Length == 0? ¿Una matriz dimensionada para el tamaño 0? – sooprise
... una matriz vacía. –
@Soo: Sí, exactamente. –