not isnullorwhitespace empty check c# string difference isnullorempty string-function

empty - isnullorwhitespace c#



Diferencia entre IsNullOrEmpty e IsNullOrWhiteSpace en C# (8)

El primer método comprueba si una cadena es nula o una cadena en blanco. En su ejemplo, puede arriesgarse a una referencia nula ya que no está buscando nulo antes de recortar

1- string.IsNullOrEmpty(text.Trim())

El segundo método verifica si una cadena es nula o un número arbitrario de espacios en la cadena (incluyendo una cadena en blanco)

2- string .IsNullOrWhiteSpace(text)

El método IsNullOrWhiteSpace cubre IsNullOrEmpty , pero también devuelve true si la cadena contiene espacios en blanco.

En su ejemplo concreto, debería usar 2) ya que corre el riesgo de una excepción de referencia nula en el enfoque 1) ya que está llamando a recortar en una cadena que puede ser nula

Esta pregunta ya tiene una respuesta aquí:

¿Cuáles son las diferencias entre estos comandos en C #

string text= " "; 1-string.IsNullOrEmpty(text.Trim()) 2-string.IsNullOrWhiteSpace(text)


Espacio , Tab /t y newline /n son la diferencia

string.IsNullOrWhiteSpace("/t"); //true string.IsNullOrEmpty("/t"); //false string.IsNullOrWhiteSpace(" "); //true string.IsNullOrEmpty(" "); //false string.IsNullOrWhiteSpace("/n"); //true string.IsNullOrEmpty("/n"); //false

https://dotnetfiddle.net/4hkpKM

también vea esta respuesta sobre: personajes en espacio en blanco


La implementación real de los métodos parece.

public static bool IsNullOrEmpty(String value) { return (value == null || value.Length == 0); } public static bool IsNullOrWhiteSpace(String value) { if (value == null) return true; for(int i = 0; i < value.Length; i++) { if(!Char.IsWhiteSpace(value[i])) return false; } return true; }

Por lo tanto, es obvio que el segundo método también verifica los espacios en blanco, no solo la longitud de la cadena de entrada. Los espacios en blanco se refieren a: https://msdn.microsoft.com/en-us/library/system.char.iswhitespace(v=vs.110).aspx


Si su cadena (en su caso, el text variable) podría ser nula, esto representaría una gran diferencia:

1- string.IsNullOrEmpty(text.Trim()) -> EXCEPTION ya que llama a un mthode de un objeto nulo

2- string.IsNullOrWhiteSpace(text) Esto funcionaría bien ya que el problema nulo se está verificando internamente

Para proporcionar el mismo comportamiento utilizando la 1ª opción, deberá verificar de alguna manera si no es nula primero y luego usar el método trim ()

if ((text != null) && string.IsNullOrEmpty(text.Trim())) { ... }


[Prueba de rendimiento] solo en caso de que alguien se pregunte, en una prueba comparativa de cronómetro

if (nopass.Trim (). Length> 0)

if (! string.IsNullOrWhiteSpace (nopass))

estos fueron los resultados:

Trim-Length con valor vacío = 15

Trim-Length con valor no vacío = 52

IsNullOrWhiteSpace con valor vacío = 11

IsNullOrWhiteSpace con valor no vacío = 12


String.IsNullOrEmpty(string value) devuelve true si la cadena es nula o está vacía. Para referencia, una cadena vacía se representa con "" (dos caracteres de comillas dobles)

String.IsNullOrWhitespace(string value) devuelve true si la cadena es nula, está vacía o contiene solo espacios en blanco, como un espacio o una pestaña.

Para ver qué caracteres cuentan como espacios en blanco, consulte este enlace: http://msdn.microsoft.com/en-us/library/t809ektx.aspx


string.isNullOrWhiteSpace (text) se debe usar en la mayoría de los casos, ya que también incluye una cadena en blanco .

using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; namespace Rextester { public class Program { public static void Main(string[] args) { //Your code goes here var str = ""; Console.WriteLine(string.IsNullOrWhiteSpace(str)); } } }

¡Vuelve verdadero !


IsNullOrWhiteSpace es un método de conveniencia que es similar al siguiente código, excepto que ofrece un rendimiento superior:

return String.IsNullOrEmpty(value) || value.Trim().Length == 0;

Los caracteres de espacio en blanco están definidos por el estándar Unicode. El método IsNullOrWhiteSpace interpreta cualquier carácter que devuelve un valor de verdadero cuando se pasa al método Char.IsWhiteSpace como un carácter de espacio en blanco.