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

Как избавиться от класса в .net?

Сборщик мусора .NET в конечном итоге освободит память, но что делать, если вы хотите, чтобы эта память немедленно вернулась? Какой код нужно использовать в классе MyClass для вызова

MyClass.Dispose()

и освободить все используемое пространство переменными и объектами в MyClass ?

.net   memory   dispose    

610   20   11:58, 15th August, 2020


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

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

443   11   16:58, 10th August, 2020