次のように使用される C# の「ステータス」クラスがあります。
Status MyFunction()
{
if(...) // something bad
return new Status(false, "Something went wrong")
else
return new Status(true, "OK");
}
あなたはアイデアを得る。MyFunction のすべての呼び出し元は、返された Status を確認する必要があります。
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#クラスにデストラクタは必要ない」とどこかで読みました
IDisposable インターフェイスの Dispose メソッドはオプションですか?
この場合、解放するアンマネージ リソースはありません。さらに、GC がいつオブジェクトを破棄するかは決定されません。最終的に破棄されたときに、その特定の Status インスタンスをいつどこで無視したかを知ることは可能ですか? 「using」キーワードは役に立ちますが、怠惰な呼び出し元には必要ありません。