This rule recommends using AsSpan over range-based indexers when manipulating strings in CSharp. By using AsSpan, you access a substring without creating a new string, which reduces memory allocation and avoids unnecessary garbage collection. Range-based indexers, on the other hand, can lead to unnecessary memory use by creating new strings.
This rule helps improve memory efficiency and performance, especially with large strings or many string changes. It also makes your code clearer and easier to maintain by showing you’re working with part of a strong instead of making a new one.
How to fix
Use the AsSpan method to handle substrings efficiently. For example, instead of str[1..3], use str.AsSpan()[1..3]. This prevents unnecessary string creation and improves efficiency.
Non-Compliant Code Examples
ReadOnlySpan<char>slice=str[1..3];
Compliant Code Examples
ReadOnlySpan<char>slice=str.AsSpan()[1..3];
Seamless integrations. Try Datadog Code Security
Datadog Code Security
Try this rule and analyze your code with Datadog Code Security
How to use this rule
1
2
rulesets:- csharp-best-practices # Rules to enforce C# best practices.
Create a static-analysis.datadog.yml with the content above at the root of your repository
Use our free IDE Plugins or add Code Security scans to your CI pipelines