Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# откатить создание класса / 4 сообщений из 4, страница 1 из 1
26.12.2013, 18:06
    #38513485
essbase.ru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# откатить создание класса
Подскажите пж.
как в конструктуре откатить создание класса.
т.е. если в результате разбора переданных параметров я принял решение, что класс мне не нужен, то можно ли вернуть null или что-то в этом вроде ?

ЕР
...
Рейтинг: 0 / 0
26.12.2013, 18:47
    #38513517
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# откатить создание класса
Код: c#
1.
2.
3.
4.
5.
private Foo CreteFoo(int a, string b, float c)
{
    if(a == -1) return null;
    return new Foo(a, b c);
}
...
Рейтинг: 0 / 0
26.12.2013, 18:49
    #38513522
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# откатить создание класса
essbase.ru,

Разве что исключение выбросить, но мне это не кажется хорошей затеей. Что мешает в коде вызова удостовериться, нужен ли вам объект? Если много мест - то, например, просить объект у фабрики, а в ней проверять, нужен ли он.
...
Рейтинг: 0 / 0
26.12.2013, 21:29
    #38513619
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# откатить создание класса
essbase.ru, конструктор не может отменить создание экземпляра класса, но может сгенерировать исключение. Однако память уже будет выделена и сборщик мусора должен будет ее освободить. Кроме того исключение нужно обрабатывать, что может оказаться неудобным. Возможно тебе стоит создать класс с private конструктором и public методом для создания экземпляра.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
class Example
{
    private Example() { }
    public static Example CreateInstance(...)
    {
         if (...) return null; // Не создаем экземпляр
         return new Example();
    }
}
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# откатить создание класса / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]