формату - перевести дату в секунды c#




Какова цель: public static DateTime ToDateTime(значение DateTime) в.NET Framework? (3)

Да, вы можете удалить его. Это полностью избыточно. Что касается того, почему: я думаю, кто-то думал, что было бы неплохо избегать людей, случайно вызывающих Convert.ToDateTime(object) (который был бы неявным), что связано с коробкой, проверкой типов и распаковкой. Честно говоря, это похоже на глупую причину для меня, по строкам «писать плохой код, получать плохие результаты».

Я поддерживаю существующий проект, и я нашел эту строку кода:

Datetime someDate = ....;
var anotherDateTime = Convert.ToDateTime(someDate);

Сначала я ожидал, что someDate будет преобразован в строку, вызвав метод ToString на нем неявно, но я ошибся. Когда я нажал F12 на метод, я вижу определение этого метода в классе System.Convert , которое выглядит следующим образом:

// Summary: Returns the specified System.DateTime object; no actual conversion is performed.
// Parameters:
//   value: A date and time value.
// Returns:
//     value is returned unchanged.
public static DateTime ToDateTime(DateTime value);

Сначала Почему в .NET Framework есть такой метод, в первую очередь, поскольку в документации говорится, что этот метод ничего не делает?
Второй Пока я рефакторинг кода, могу ли я безопасно удалить вызов для этого метода, не влияя на поведение?


Как вы можете видеть в текущих источниках BCL :

public static DateTime ToDateTime(DateTime value) {
        return value;
}

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


Это связано с тем, что класс Convert предназначен для работы с типами, реализующими интерфейс IConvertible .

Этот интерфейс содержит методы для преобразования типа реализации в типы CLR, такие как decimal , byte , DateTime и т. Д. Каждый из этих типов реализует сам IConvertible .

Итак, Convert.ToDateTime(DateTime d) - не единственный метод, который делает «ничего». Он существует для любого из этих типов CLR, реализующих IConvertible , например Convert.ToChar(char c) . Это происходит только из-за того, что все эти типы реализуют IConvertible .

Вы можете прочитать об этом в comments исходного кода класса Convert .





datetime