С# пустая строка → null?

есть много раз, когда у меня есть входной текст,

и если его пустой (пользователь не напечатал какой-либо текст) - я хочу отправить запрос БД "null",

а не String.Empty. ( или "")

поэтому я нахожу, что сам делаю это много:

var mySqlValue =  string.IsNullOrEmpty( tbCustomerId.Text)?null:tbCustomerId.Text;

это кажется мне уродливым.

.net дает множество других решений для противоположных сценариев:

        string.IsNullOrEmpty
        string.IsNullOrWhiteSpace
        myProblemVal ?? myDefultVal

Я знаю, что это можно решить с помощью методов расширения - и я знаю, как это сделать.

но есть ли что-нибудь лучше?

есть ли интеллектуальный код для: " if its empty → null ".

Ответ 1

но есть ли что-нибудь лучше?

Нет, хотя я бы сказал, что то, что вы описываете в вопросе (методы расширения), абсолютно нормально. И, как вы описываете в вопросе, в другом направлении у вас есть коллапс.

Ответ 2

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

public static class Extensions {
    public static string NullIfWhiteSpace(this string value) {
        if (String.IsNullOrWhiteSpace(value)) { return null; }
        return value;
    }
}

Что вы можете использовать так:

var mySqlValue = tbCustomerId.Text.NullIfWhiteSpace();

Я действительно не знаю, что вы представляете, чем-то лучше, чем методы расширения. Как вы определяете "лучше"? Более короткие? Использование специального ключевого слова? Использование редко используемых операторов, чтобы выглядеть умным? Это уже один вызов метода, добавленный к вашему значению, который даже работает с нулевыми значениями, а необходимая логика не может быть выражена короче, чем это. Кроме того, я не знаю какого-либо специального синтаксиса для него.

Ответ 3

Объявите свой собственный статический метод:

public static string NullIfEmpty(string value)
{
  return string.IsNullOrEmpty(value) ? null : value;
}

дела

MyHelper.NullIfEmpty (значение) не является более уродливым, чем вызов статического метода строкового типа... И он кажется более чистым, чем каждый раз писать "string.IsNullOrEmpty(tbCustomerId.Text)? Null: tbCustomerId.Text".