ReSharper 2026.1 Help

コードインスペクション: プロパティの戻り値は呼び出し元で破棄する必要があります。

JetBrains.Annotations[MustDisposeResourceAttribute] を使用して呼び出し元コード内で リソースの破棄を強制している場合、ReSharper はアノテーション付きソースから直接リソースを返すプロパティを報告します。 つまり、API のユーザーは、プロパティを使用するたびに作成される使い捨てリソースを処理する必要があります。 以下に例を示します。

[MustDisposeResource] public class HasNativeResources : IDisposable { private IDisposable _resource; public void DoTaskOne() {/*do something with _resource*/} public void DoTaskTwo() {/*do something with _resource*/} public void Dispose() => _resource.Dispose(); } public class Item { // The potential problem is reported here public HasNativeResources Resource => new HasNativeResources(); } public class Test { public Test() { var item = new Item(); // Resource leak can happen here if the resource is not properly handled item.Resource.DoTaskOne(); item.Resource.DoTaskTwo(); } }

この問題を解決するには、一般的に次の 2 つの方法があります。

  • プロパティがオブジェクトの一部ではないことを API ユーザーに伝えます。 これは、たとえば プロパティをメソッドに変換することで実行できます。

  • プロパティをオブジェクトの一部にして、リソースを内部で処理します。 これは、たとえば、プロパティのバッキングフィールドを追加し、それをオブジェクトの Dispose() メソッドに配置することで実行できます。

2026 年 6 月 12 日