Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возвращение функцией null-значений 
:(
    Опции темы
Injener
Дата 4.6.2007, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 6.10.2006
Где: СПб

Репутация: нет
Всего: 1



Возникла такая проблема
Код

        public static DateTime TruncateDateTime(object str, bool IsNull)
        {
            DateTime result = null;
            if (str.ToString().Length != 0)
            {
                result = DateTime.Parse(str.ToString());
                if (DateTime.Compare(DateTime.Parse(str.ToString()), System.Data.SqlTypes.SqlDateTime.MaxValue.Value) > 0)
                    result = System.Data.SqlTypes.SqlDateTime.MaxValue.Value;
                if (DateTime.Compare(DateTime.Parse(str.ToString()), System.Data.SqlTypes.SqlDateTime.MinValue.Value) < 0)
                    result = System.Data.SqlTypes.SqlDateTime.MinValue.Value;
            }
            else
            {
                if (!IsNull) result = DateTime.Today;
            }
            return result;
        }

При компиляции пишет ошибку - типа null не конвертируется в DateTime.
Вопрос - а что функция не может возвращать null?
--------------------
Любое дело можно сделать тремя способами:1) правильно2) неправильно3) и так как это делают в армии
PM MAIL   Вверх
HalkaR
Дата 4.6.2007, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 14
Всего: 42



Injener, нет просто DateTime не может быть равен null (это значимый тип).

Ошибка видимо здесь 
Код

DateTime result = null;


А вот так делать НЕ НАДО!
Код

DateTime.Parse(str.ToString())


Добавлено через 3 минуты и 29 секунд
Во первых есть DateTime.TryParse, по крайней мере не будет лишних исключений. Во вторых Parse зависит от региональных настроек, что также может вызывать проблемы.

Это сообщение отредактировал(а) HalkaR - 4.6.2007, 16:11
PM MAIL   Вверх
Дрон
Дата 4.6.2007, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 92



Цитата(Injener @  4.6.2007,  17:07 Найти цитируемый пост)
Вопрос - а что функция не может возвращать null? 

Функция-то может. Но как сказал HalkaR DateTime -- это структура (struct), которая не может иметь значения null.
Если уж очень хочется использовать null, то во .NET 2.0 появилась возможность сделать так:
Код
public static DateTime? TruncateDateTime(object str, bool IsNull)



--------------------
Да. Именно так.
PM   Вверх
altarvic
Дата 5.6.2007, 06:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 2.3.2007

Репутация: 1
Всего: 1



если 1.1, то можно воспользоваться библиотекой nullabletypes
PM MAIL   Вверх
SpaceSpace
Дата 5.6.2007, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 10.4.2007
Где: Самара

Репутация: 2
Всего: 10



Можно и подлиннее... : )
Код

public static Nullable<DateTime> TruncateDateTime(object str, bool IsNull)




--------------------
Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение.
70-565
MCPD Enterprise 3.5 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0765 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.