Показывать миллисекунды компонента DateTime при отладке в Visual Studio

Я пытаюсь отладить в Visual Studio что-то, что требует точности до миллисекунды, и это делает это очень обременительным, потому что представление без параметровToString() для System.DateTime не включает компонент миллисекунд.

Примером может служить проверка того, что массив System.DateTime упорядочен, я хочу иметь возможность видеть компонент миллисекунд при проверке из окна местных жителей.

Я нет прошу помощи со строками формата в DateTime.ToString

Похоже, он наследуется от настроек глобализации системы, которые не позволяют указать формат с миллисекундами (по понятным причинам): Показывать миллисекунды компонента DateTime при отладке в Visual Studio

Спасибо.

ToString () может получить параметр формата, и вы можете указать миллисекунды в формате

Steve 25.05.2018 21:58

Это требует написания кода. Я говорю о проверке значений во время отладки.

Elaskanator 25.05.2018 21:59

Вы можете создать новый класс, унаследованный от DateTime, и переопределить ToString(), чтобы возвращать время в миллисекундах. Не самый чистый, но он выполнит свою работу, и вы сможете проверить значения при отладке.

Lews Therin 25.05.2018 22:01

Что значит «это неуместно»? Это сделает это за вас: ToString ("MM / dd / yyyy hh: mm: ss.fff). При чем тут диалог, который вы показываете?

Phil N DeBlanc 25.05.2018 22:01

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

user47589 25.05.2018 22:02

Эми права, мое решение было бы излишним. Я просто подумал об этом больше, и вы можете добавить часы в отладку, которые показывают свойство miliseconds.

Lews Therin 25.05.2018 22:03

@PhilNDeBlanc Это требует изменения кода

Elaskanator 25.05.2018 22:03

Вы можете изменить формат в Visual Studio. См. docs.microsoft.com/en-us/visualstudio/debugger/…

John Wu 25.05.2018 22:04

Так что ты спрашиваешь? В ваш вопрос не входит вопрос.

user4843530 25.05.2018 22:07

@LewsTherin DateTime - это структура, от которой нельзя унаследовать.

JamesFaix 25.05.2018 22:12

@JamesFaix Еще один хороший момент. Если бы я не прочитал вопрос так быстро, я бы не пропустил, что они хотели видеть миллисекундный компонент в режиме отладки. Я оставил этот комментарий только для истории комментариев.

Lews Therin 25.05.2018 22:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
11
715
3

Ответы 3

Прежде чем я отвечу, я сначала хочу ответить на один из ваших комментариев по вопросу:

That requires writing code. I'm talking about inspecting the values while debugging.

Мой ответ требует написания единственной строчки кода; однако Только влияет на визуализатор отладчика и только на каждый экземпляр DateTime и не влияет на производительность вашего кода во время выполнения.

При этом сказано:

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

[assembly: DebuggerDisplay("Start = {StartDate} | End = {EndDate}]", Target = typeof(DateRange))]

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

Вы можете поместить это в любой файл, но, честно говоря, он принадлежит файлу AssemblyInfo.cs вместе с другими атрибутами уровня сборки.

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

[assembly: DebuggerDisplay("{ToString(\"fff\")}", Target = typeof(DateTime))]

Если это неверно, дайте мне знать, и я внесу необходимые исправления.

Этот формат будет работать да. Хотя я предполагаю, что OP хочет формат в том числе миллисекунд, а не просто миллисекунд.

Evk 25.05.2018 22:11

@Evk ну да. OP сказал, что он не ищет помощи с самой строкой формата, так что я думаю, что это нормально.

user47589 25.05.2018 22:11

Я бы рекомендовал добавить смотреть при отладке. Вы можете наблюдать за свойствами объектов, используемых в вашем коде, даже если сам код никогда не обращается к этим свойствам. Просто посмотрите свойство Millisecond вашего экземпляра DateTime.

Я немного запутался в том, что вы имеете в виду при отладке. Я предполагаю, что вы запускаете приложение в VisualStudio.

Во время отладки вы сможете просмотреть свойство "Миллисекунды", наведя указатель мыши на свойство, а затем щелкнув стрелку раскрытия.

https://msdn.microsoft.com/de-de/library/system.datetime.millisecond(v=vs.110).aspx

Вы можете добиться этого с помощью VisualStudio и функции добавления часов, чтобы наблюдать за свойством или просто использовать точки останова.

Если точки останова сделают ваш результат непригодным для использования, вам необходимо реализовать механизм отладки, который, например, записывает необходимую информацию с помощью Console.WriteLine. Затем вы можете увидеть результаты в окне вывода.

Наведите указатель мыши на DateTime и разверните его свойства или разверните свойства для десятков строк в массиве - это обременительная часть;)

Elaskanator 25.05.2018 22:17

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