我在 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# 类?
在 Status 类的 C++ 版本中,我可以对析构函数中的一些私有 bool bIsChecked 编写测试,并在有人不检查此实例时敲响一些铃声。
C# 中的等效选项是什么?我在某处读到“你不想在你的 C# 类中使用析构函数”
IDisposable 接口的 Dispose 方法是一个选项吗?
在这种情况下,没有可释放的非托管资源。此外,还不确定GC何时释放该对象。当它最终被处置时,是否仍然可以知道您在何时何地忽略了该特定状态实例?“using”关键字确实有帮助,但同样,懒惰的调用者不需要它。