У меня есть класс "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" действительно помогает, но опять же, оно не требуется для ленивых абонентов.