Вопрос

Я хочу удалить первую строку:

                 !string.IsNullOrEmpty(cell.Text) 
.

Это вызывает какую-либо проблему?

Я бежал через это в некоторых коде:

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

Я думаю, что первая строка .isnulloMempty вернет ложь на строке с пробелами


и линия с Trim () заботится об этом, поэтому первая isnullolemempty бесполезно

Но до того, как я удалю линию без отделки, я подумал, что покончил в группе.

Это было полезно?

Решение

Первый isnullolemempty уловит нулевые значения, прежде чем они бросают NullReferenceException с Trim ().

Тем не менее, есть лучший способ:

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

Другие советы

Если Cell.Text NULL, у вас будет исключение без этого сначала.

в .NET 4.0:

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

В более старых версиях вы должны сохранить два теста, потому что если вы удалите первый и cell.Text NULL, вы получите NRE на второй, когда вы пытаетесь вызвать .Trim на NULL Excast.

или вы также можете сделать это:

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

Или еще лучше, вы могли бы написать Метод расширения дляТип строки, который сделает это, чтобы вы могли просто:

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

Что может выглядеть так:

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

Я полагаю, что тест - убедиться, что Cell.Text не является нором сначала ... если это так, пытаясь обходить его и получить только что Cell.text.trim () будет задыхаться, так как вы не можете сделать отделку нанулевая строка.

Почему бы не использовать !string.IsNullOrWhitespace(call.Text) и отбросить предыдущие две проверки?

Вы не можете удалить только первое isnullolemempty, поскольку Cell.Text может быть нулевым и, таким образом, вызов на нем вызов будет бросать и исключить.Используйте isnullorwhiteSpace Если вы используете .NET 4.0 или уйтиоба проверки.

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

Если Cell.Text является NULL, строка выражения .isnullolemempty (Cell.text.trim ()) будет выбросить исключение, поскольку он пытается запустить метод Trim () на ячейке.

Гораздо больше читают, если бы состояние: Cell.Text!= Null && Cell.text.tim ()!=""

Вы можете использовать метод расширения, как это:

/// <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;
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top