ガターマークを使用して継承階層を移動する
ソリューションおよび参照アセンブリ の他の場所にベースシンボルや継承元が存在する型および型メンバーには、ReSharper が継承階層を上下にナビゲートできるガターアイコンを表示します:

次のアイコンは、さまざまな場合のベースシンボルと継承を示します。
| インターフェースまたはそのメンバーに実装があります。これらの実装にナビゲートできます。 |
| クラスに派生クラスがある、またはクラスメンバーが他の場所でオーバーライドされています。これらの継承元やオーバーライドにナビゲートできます。 |
| メンバーが基本型の別のメンバーを隠しています。非表示になっているメンバーへナビゲートできます。 |
| このメンバーは 1 つのメンバーを隠し、継承階層の別のメンバーを実装します。隠されているメンバーとオーバーライドされたメンバーの両方にナビゲートできます。 |
| 型または型メンバーがインターフェースを実装しています。インターフェースの型またはメンバーへナビゲートできます。 |
| メンバーは、デフォルトの実装を持つインターフェースメンバーを実装し、そこに移動できます。 |
| クラスが他のクラスから継承されている、またはクラスメンバーが仮想または抽象メンバーをオーバーライドしています。基底クラスやメンバーへナビゲートできます。 |
| クラスがインターフェースを実装し、基底クラスを継承している、またはメンバーがインターフェースメンバーを実装する仮想・抽象メンバーをオーバーライドしています。オーバーライドされた型や実装された型、またはメンバーへナビゲートできます。 |
上にマウスを重ねるとクイックサマリーが表示され、アイコンをクリックするとナビゲートできます。 ベースまたは継承シンボルが 1 つだけの場合、ReSharper は直接そのシンボルへナビゲートします。複数の結果がある場合は、リストからターゲットを選択できます。 ターゲットが 1 つだけの場合でもリストを表示したい場合は、ReSharper オプション ページの Go to Base/Inheritor: 結果が 1 つだけの場合はリストを表示せずに移動する。 チェックボックスをオフにしてください Alt+R、O 。
キーボードを使用する場合は、ガターマークのある行にキャレットを置き、 Alt+Enter を押して、メニューからナビゲーションアクションを選択します。 または、専用のナビゲーションコマンドを使用することもできます。
ベースシンボルへ移動 Control+U は、基本タイプまたはメンバーに移動します。
派生シンボルに移動 Control+Shift+Alt+B は、タイプまたはメンバーのすべての派生シンボルをリストし、それらの 1 つに直接移動します。
実装に移動 Control+Shift+Alt+B は、継承階層の中間ステップをバイパスする型とメンバーの実際の実装を検索します。
Visual Studio 継承マージン
バージョン 16.10 から、Visual Studio は 独自の継承マージンの実装を提供しています。これは ReSharper の機能に似ていますが、いくつか細かい違いがあります。 たとえば、Visual Studio 継承マージンは型が基底と派生の両方である場合に追加のアイコンを持ちますが、メンバーを非表示にするアイコンは表示されず、ブレークポイントと干渉するなどの違いがあります。
デフォルトでは、ReSharper は Visual Studio 継承マージンを非表示にし、独自のアイコンをガターに表示します。 Visual Studio 継承マージンまたは両方を使いたい場合は、ReSharper オプション ページの 継承マージン 配下にあるオプションをご利用ください Alt+R、O 。
パフォーマンスに関する考慮事項
型やメンバーに継承があるかどうかを調べて対応するガターマークを表示するには、ReSharper でいくつかの計算を行う必要があります。 これらの計算はほとんどの場合、効率的に実行され、パフォーマンスに影響はありませんが、大規模な継承階層と弱いハードウェアの組み合わせにより、パフォーマンスが低下する可能性があります。 このような場合は、複雑な計算を回避しパフォーマンスを向上させるため、ReSharper オプション ページの 実装およびオーバーライドされたタイプとメンバーのガターナビゲーションマークを表示する チェックボックスをオフにできます Alt+R、O 。
一方、ベースタイプまたはメンバーのオンザフライ検出は、パフォーマンスの面ではるかに安価です。 他のタイプまたはメンバーを実装またはオーバーライドするタイプおよびメンバーの階層マークは、このオプションでは無効になりません。
この機能は、次の言語とテクノロジーで サポートされています。
ここで説明する手順と例では、C# の機能の使用について説明します。 他の言語の詳細については、 言語およびフレームワーク セクションの対応するトピックを参照してください。