Строка. Метод расширения IsNullOrBlank

В SQL Server 2005+ вы можете использовать функции Window. Но он не поддерживается в MySQL.

В подзапросе, выбор операторов должен иметь оператор объединения. Например:

SELECT * FROM (
    (SELECT COUNT(..) ...) AS C1
       INNER JOIN (SELECT COUNT(...) ...) AS C2
            ON <condition>
       INNER JOIN ... )
14
задан sipwiz 15 March 2009 в 11:14
поделиться

7 ответов

Вы могли сделать:

public static bool IsNullOrBlank(this String text)
{
  return text==null || text.Trim().Length==0;
}

И затем называют его как это:

if(myString.IsNullOrBlank())
{
  throw new ArgumentException("Blank strings cannot be handled.");
}

Это работает, потому что C# позволяет Вам называть дополнительный метод на null экземпляры.

36
ответ дан 1 December 2019 в 05:58
поделиться

Можно безопасно использовать дополнительный метод на экземпляре:

public static class StringExtensions
{
    public static bool IsNullOrBlank(this string s)
    {
        return s == null || s.Trim().Length == 0;
    }
}

Тесты:

string s = null;
Assert.IsTrue(s.IsNullOrBlank());
s = " ";
Assert.IsTrue(s.IsNullOrBlank());

Это выглядит немного странным, хотя, и я вместо этого выяснил бы, почему Ваши строки должны проверяться на этот случай так часто. При фиксации их в источнике Вы не должны будете быть таким образом параноик о них позже!

6
ответ дан 1 December 2019 в 05:58
поделиться
public static bool IsNullOrEmptyTrimmed(string value)
{
    return (value == null || value.Length == 0) ?
        true :
        value.Trim().Length == 0;
}

или

public static bool IsNullOrEmpty(this String value, bool checkTrimmed)
{
    var b = String.IsNullOrEmpty(value);
    return checkTrimmed ? (b && value.Trim().Length > 0) : b;
}
0
ответ дан 1 December 2019 в 05:58
поделиться
public static bool IsNull(this object o)
{
    return string.IsNullOrEmpty(o.ToStr());
}

public static bool IsNotNull(this object o)
{
    return !string.IsNullOrEmpty(o.ToStr());
}

public static string ToStr(this object o)
{
    return o + "";
}
-1
ответ дан 1 December 2019 в 05:58
поделиться

С несколькими приемами Вы заставляете его быть похожим, Вы добавили к Строка класс в любом файл cs :

namespace JDanielSmith
{
    public static class String
    {
        public static bool IsNullOrBlank(string text)
        {
            return text == null || text.Trim().Length == 0;
        }
    }
}

(примечание, это не дополнительный метод, см. мой комментарий).

Затем в некотором другом файле CS:

using String = JDanielSmith.String;
namespace Foo.Bar.Baz
{
    class Program
    {
        static void test(string myString)
        {
            if (String.IsNullOrBlank(myString))
            {
                throw new ArgumentException("Blank strings cannot be handled.");
            }
        }
...

Уведомление "желаемый" синтаксис Строка. IsNullOrBlank () . Я не обязательно предлагаю, чтобы Вы на самом деле сделали вещи этот путь, просто указав, как Вы могли настроить вещи заставить Ваш код работать.

0
ответ дан 1 December 2019 в 05:58
поделиться

Можно ли добавить статические методы для существующих классов? Ответ не, и значение было бы довольно тонким, потому что необходимо будет все еще знать который имя класса ввести сначала; с дополнительными методами преимущество состоит в том, что Вы запускаете с имени переменной, и автозавершение показывает Вам вещи, которые применимы к нему.

Другое мнение, часто высказываемое, - то, что дополнительные методы должны всегда выдавать исключение как можно скорее, если их первый аргумент является нулевым. Однако я думаю, что правило является излишеством, если метод упоминает на его имя, что это разработано для проверки на null.

настоящая проблема, которую Вы имеете, состоит в том, что Вы хотите аккуратно и четко выполнить некоторый код после проверки нулевую ссылку. Один способ получить тот шаблон находится в мой ответ на этот вопрос .

2
ответ дан 1 December 2019 в 05:58
поделиться

Перегрузка существующих ответов могла бы быть:

public static bool IsNullOrBlank(this String text, Action<String> doWhat)
{
  if (text!=null && text.Trim().Length>0)
    doWhat(text);
}

Было бы полезно, если вы хотите запускать код только с допустимым значением.

Не очень полезный пример, но просто показываю использование:

Name.IsNullOrBlank(name=>Console.WriteLine(name));
2
ответ дан 1 December 2019 в 05:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: