Найдено результатов: 2

Принудительное выполнение вызова требуемой функции

У меня есть класс "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#   garbage-collection   dispose   destructor    

444   11   16:58, 10th August, 2020


В C++ конструктор и деструктор могут быть встроенными функциями?

VC++ делает функции, которые реализуются в рамках объявления класса встроенными функциями.

Если я объявляю класс Foo следующим образом, то являются ли CONSTRUCTOR и DESTRUCTOR встроенными функциями?

class Foo 
{
    int* p;
public:
    Foo() { p = new char[0x00100000]; }
    ~Foo() { delete [] p; }
};

{
    Foo f;
    (f);
}

c++   constructor   destructor    

349   5   17:03, 13th August, 2020