Question

Je veux supprimer la première ligne :

                 !string.IsNullOrEmpty(cell.Text) 

est-ce que cela posera un problème ?

J'ai rencontré ceci dans du code :

                if ((id % 2 == 0)
                    && !string.IsNullOrEmpty(cell.Text)
                    && !string.IsNullOrEmpty(cell.Text.Trim())
                    )

Je pense que la première chaîne.IsNullOrEmpty renverrait false sur une chaîne avec des espaces
et la ligne avec Trim() s'en charge, donc le premier IsNullOrEmpty est inutile

Mais avant de supprimer la ligne sans la garniture, j'ai pensé que je la ferais passer par le groupe.

Était-ce utile?

La solution

Le premier Isnullorempty attrape des valeurs nulles avant de lancer une nullreferenceException avec la garniture ().

Cependant, il y a une meilleure façon:

if ((id % 2 == 0) && !string.IsNullOrWhiteSpace(cell.Text))

Autres conseils

si cell.text est null, vous auriez une exception sans ce premier chèque.

Dans .NET 4.0 :

if (id % 2 == 0 && !string.IsNullOrWhiteSpace(cell.Text))
{
    ...
}

Dans les anciennes versions, vous devez conserver les deux tests car si vous supprimez le premier et cell.Text est nul, vous obtiendrez un NRE à la seconde lorsque vous tenterez d'invoquer .Trim sur une instance nulle.

Ou vous pouvez aussi faire ceci :

if (id % 2 == 0 && string.IsNullOrWhiteSpace((cell.Text ?? string.Empty).Trim()))
{
    ...
}

ou mieux encore, vous pourriez écrire un méthode d'extension pour le type de chaîne qui fera cela afin que vous puissiez simplement :

if (id % 2 == 0 && !cell.Text.IsNullOrWhiteSpace())
{
    ...
}

ce qui pourrait ressembler à ceci :

public static class StringExtensions
{
    public static bool IsNullOrWhiteSpace(this string value)
    {
        return string.IsNullOrEmpty((value ?? string.Empty).Trim());
    }
}

Je crois que le test est de s'assurer que Cell.Text n'est pas null d'abord ... Si tel est le cas, essayez de le contourner et d'obtenir juste cell.text.trim () s'étoufferait comme vous ne pouvez pas faire une garnitureString null.

Pourquoi ne pas utiliser !string.IsNullOrWhitespace(call.Text) et laisser tomber les deux chèques précédents ?

Vous ne pouvez pas retirer uniquement le premier isnullorempty que la cellule.Text pourrait être nulle et appeler ainsi la garniture sur elle lancerait et une exception.Utilisez isnullorwhiteespace si vous utilisez .NET 4.0 ou congéles deux vérifications.

if ((id % 2 == 0) && !string.IsNullOrWhiteSpace(cell.Text))

si cell.text est null, l'expression string.isnullorempty (cell.text.trim ()) lancera une exception car elle tente d'exécuter la méthode garniture () sur la cellule.

beaucoup plus lisé si la condition serait: cell.text!= null && cell.text.trim ()!=""

Vous pouvez utiliser la méthode de l'extension comme celle-ci:

/// <summary>
/// Indicates whether the specified string is null or empty.
/// This methods internally uses string.IsNullOrEmpty by trimming the string first which string.IsNullOrEmpty doesn't.
/// .NET's default string.IsNullOrEmpty method return false if a string is just having one blank space.
/// For such cases this custom IsNullOrEmptyWithTrim method is useful.
/// </summary>
/// <returns><c>true</c> if the string is null or empty or just having blank spaces;<c>false</c> otherwise.</returns> 
public static bool IsNullOrEmptyWithTrim(this string value)
{
    bool isEmpty = string.IsNullOrEmpty(value);
    if (isEmpty)
    {
        return true;
    }
    return value.Trim().Length == 0;
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top