Пустой указатель параметры в C#?

Если Вам только нужно симпатичное расположение с отступом, не представляя новых разрывов строки, можно подать заявку эти indent-region команда ко всему буферу с этими нажатиями клавиш:

C-x h
C-M-\

, Если также необходимо представить разрывы строки, так, чтобы открывающие и закрывающие тэги были на отдельных строках, Вы могли использовать следующую очень хорошую функцию elisp, записанную Benjamin Ferrari . Я нашел его на его блоге, и надеются, что для меня нормально воспроизводить его здесь:

(defun bf-pretty-print-xml-region (begin end)
  "Pretty format XML markup in region. You need to have nxml-mode
http://www.emacswiki.org/cgi-bin/wiki/NxmlMode installed to do
this.  The function inserts linebreaks to separate tags that have
nothing but whitespace between them.  It then indents the markup
by using nxml's indentation rules."
  (interactive "r")
  (save-excursion
      (nxml-mode)
      (goto-char begin)
      (while (search-forward-regexp "\>[ \\t]*\<" nil t) 
        (backward-char) (insert "\n"))
      (indent-region begin end))
    (message "Ah, much better!"))

Это не полагается на внешний инструмент как Опрятный.

14
задан Alexei Levenkov 4 October 2014 в 02:39
поделиться

5 ответов

Нет. Я бы обернул его в какой-нибудь метод, чтобы шум не попадал в основной поток:

  bool IsValidDate(string value)
  {
     DateTime result;
     return DateTime.TryParse(value, out result); //result is stored, but you only care about the return value of TryParse()
  }
20
ответ дан 1 December 2019 в 06:21
поделиться

TryParse - лучший вариант. Это просто бесполезная переменная. Другие варианты включают использование Convert.ToDateTime () в блоке try-catch. Но опять же, это было бы неэффективно, потому что блоки try-catch должны быть тяжелыми. Следующий вариант - регулярное выражение. Это лучшее решение. Я думаю, это дает вам результат мгновенно, чем по сравнению с другими.

Вы можете очень хорошо обернуть метод, как сказал Ким Грасман ...

1
ответ дан 1 December 2019 в 06:21
поделиться

Нет. Вы не можете избавиться от переменной, но вы также не должны получать предупреждение компилятора.

Передача переменной как из означает «использование» переменной. Из-за этого компилятор не выдаст предупреждение.

4
ответ дан 1 December 2019 в 06:21
поделиться

Я не предлагаю вам делать это, но вы можете использовать один вспомогательный класс, чтобы упростить эту задачу для всех параметры out:

public static class OutHelper<T>
{
    [ThreadStatic]
    public static T Ignored;
}

Затем вы можете вызвать:

if (DateTime.TryParse(text, out OutHelper<DateTime>.Ignored))

Это ужасно, использует общедоступное изменяемое поле, и если ваше приложение также выполняется с некоторым вредоносным кодом, оно дает этому коду доступ к последнему проанализированному значению ... но должно работать :)

7
ответ дан 1 December 2019 в 06:21
поделиться

Если вы используете .NET 3 и выше, вы всегда можете создать метод расширения?

public static bool IsValidDate(this string value)
{
  DateTime date = DateTime.Null;
  return DateTime.TryParse(value, out date);
}

[Отредактировано для переименования метода в более подходящее]

4
ответ дан 1 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

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