JetBrains Rider 2024.1 ヘルプ

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

固定サイズのバッファフィールドは、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]; } }

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

関連ページ:

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

設計時コードインスペクションを構成する:デフォルトでは、JetBrains Rider はサポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかにかかわらず、コードインスペクションを特定の範囲でいつでも実行できます。「鉛筆」ウィジェットを使用して、エディターから直接インスペクション設定をすばやく調整するか、設定でより詳細な構成を行うことができます。を押すか、メニューから(W...

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

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