Подтвердить что ты не робот

"Нет перегрузки для метода" ToString "принимает" 1 "аргумент" ошибка "При форматировании поля Datetime в строку" dd-MM-yyyy "

Я работаю над asp.net 3.5. Я хочу преобразовать данные DateTime из sqldatareader в String в формате "dd-MM-yyyy". Но когда я использую параметр форматирования "dd-MM-yyyy" как "rdMonthlyLeave["LEAVE_DATE"].ToString("dd-MM-yyyy")", браузер возвращает ошибку компиляции как

Сообщение об ошибке компилятора: CS1501: перегрузка для метода 'ToString' принимает аргументы '1'

У вас есть решение?

4b9b3361

Ответ 1

Сначала нужно направить его на DateTime:

DateTime leave = (DateTime) rdMonthlyLeave["LEAVE_DATE"];
DoSomethingWith(leave.ToString("dd-MM-yyyy"));

или просто

((DateTime)rdMonthlyLeave["LEAVE_DATE"]).ToString("dd-MM-yyyy")

Обратный тип индексатора DataReader - это просто object, а object не имеет перегрузки ToString, которая принимает строку. Не забывайте, что перегрузка - это решение времени компиляции - компилятор выбирает соответствующий метод с совместимой сигнатурой, и только переопределение происходит на основе типа времени выполнения. В этом случае перегрузка ToString с совместимой сигнатурой отсутствует, поэтому вы получаете ошибку времени компиляции.