ReSharper 2024.3 ヘルプ

コード検査: 冗長固定ポインタ宣言

固定サイズのバッファフィールドは、C スタイルのインライン配列を表す安全でないコンテキストで使用可能な構造体メンバーです。このようなフィールドは、主にネイティブコードとの相互運用に使用されます。

C# 7.3 が GC によって移動可能なメモリ内に存在する可能性がある固定サイズバッファの要素にアクセスする前は、fixed ステートメントでバッファを固定した後にのみ許可されていました。

public unsafe struct MyBufferWrapper { public fixed byte Buffer[4]; public int Foo() => Buffer[0] + Buffer[1] + Buffer[2] + Buffer[3]; // error before C# 7.3 public int Bar() { fixed (byte* ptr = Buffer) { return ptr[0] + ptr[1] + ptr[2] + ptr[3]; // ok } } }

バッファのアドレスがスタッシュでない限り、索引付けが常に安全であるため、補助固定ポインタ宣言を導入するという要件は、その要素にアクセスするために固定サイズバッファを使用する場合には不当です。

C# 7.3 は、移動可能な固定サイズバッファのインデックス作成に対する不要な制限を取り除き、それらの使用をより自然なものにしました。

public unsafe struct MyBufferWrapper { public fixed byte Buffer[4]; public int Foo() => Buffer[0] + Buffer[1] + Buffer[2] + Buffer[3]; // ok since C# 7.3 public int Bar() { byte* ptr = Buffer; // error: taking address of the fixed size buffer still requires pinning return ptr[0] + ptr[1] + ptr[2] + ptr[3]; } }

ReSharper は、fixed ステートメントを使用する必要がない場所を検出し、余分な固定ポインター宣言を削除するための迅速な修正を提供します。

関連ページ:

コードインスペクション設定を構成する

設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...

コード検査: 組込み型参照を CLR 型名または静的メンバーアクセス式のキーワードで置き換える

C# タイプのキーワードと .NET フレームワーク(CLR)のタイプ名は、内蔵 C# タイプのために互換性があります。ビルトインタイプの名前に 1 つまたは別のスタイルを使用することをお望みなら、ReSharper はあなたの好みを維持できます。静的メンバーアクセス(CLR 型名 - など)と、ローカルメンバー、メンバー、パラメーター(キーワード - など)に別々のスタイルを維持できます。ReSharper はすべての組み込み型参照があなたの好みに合っているかどうかをチェックし、それらが準拠してい...