Результаты поиска
Принудительное выполнение вызова требуемой функции
У меня есть класс "Status" в C#,, используемый следующим образом:
Status MyFunction()
{
if(...) // something bad
return new Status(false, "Something went wrong")
else
return new Status(true, "OK");
}
Вы поняли идею. Все абоненты MyFunction должны проверить возвращенный статус:
Status myStatus = MyFunction();
if ( ! myStatus.IsOK() )
// handle it, show a message,...
Ленивые абоненты, однако, могут игнорировать статус.
MyFunction(); // call function and ignore returned Status
или
{
Status myStatus = MyFunction();
} // lose all references to myStatus, without calling IsOK() on it
Можно ли сделать это невозможным? например, исключение броска
В общем : можно ли написать класс C#, на котором вы должны вызвать определенную функцию?
В версии C++ класса Status я могу написать тест на некотором частном bool bIsChecked в деструкторе и позвонить в некоторые колокола, когда кто-то не проверяет этот экземпляр.
Что такое эквивалентный вариант в C#? Я где-то читал, что " вам не нужен деструктор в вашем классе C#"
Является ли метод Dispose интерфейса IDisposable опцией?
В этом случае нет неуправляемых ресурсов для освобождения. Кроме того, не определено, когда GC будет утилизировать объект. Когда он в конечном итоге будет удален, все еще можно узнать, где и когда вы проигнорировали этот конкретный экземпляр состояния? Ключевое слово "using" действительно помогает, Но опять же, оно не требуется для ленивых абонентов.
В C++ конструктор и деструктор могут быть встроенными функциями?
VC++ делает функции, которые реализуются в рамках объявления класса встроенными функциями.
Если я объявляю класс Foo следующим образом, то являются ли CONSTRUCTOR и DESTRUCTOR встроенными функциями?
class Foo
{
int* p;
public:
Foo() { p = new char[0x00100000]; }
~Foo() { delete [] p; }
};
{
Foo f;
(f);
}