A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1844 below:

CA1844: Provide memory-based overrides of async methods when subclassing 'Stream' (code analysis) - .NET

CA1844: Provide memory-based overrides of async methods when subclassing 'Stream'

Property Value Rule ID CA1844 Title Provide memory-based overrides of async methods when subclassing 'Stream' Category Performance Fix is breaking or non-breaking Non-breaking Enabled by default in .NET 9 As suggestion Cause

A type derived from Stream overrides ReadAsync(Byte[], Int32, Int32, CancellationToken) but does not override ReadAsync(Memory<Byte>, CancellationToken). Or, a type derived from Stream overrides WriteAsync(Byte[], Int32, Int32, CancellationToken) but does not override WriteAsync(ReadOnlyMemory<Byte>, CancellationToken).

Rule description

The memory-based ReadAsync and WriteAsync methods were added to improve performance, which they accomplish in multiple ways:

In order to realize these performance benefits, types that derive from Stream must provide their own memory-based implementation. Otherwise, the default implementation will be forced to copy the memory into an array in order to call the array-based implementation, resulting in reduced performance. When the caller passes in a Memory<T> or ReadOnlyMemory<T> instance that's not backed by an array, performance is affected more.

How to fix violations

The easiest way to fix violations is to rewrite your array-based implementation as a memory-based implementation, and then implement the array-based methods in terms of the memory-based methods.

When to suppress warnings

It's safe to suppress a warning from this rule if any of the following situations apply:

Suppress a warning

If you just want to suppress a single violation, add preprocessor directives to your source file to disable and then re-enable the rule.

#pragma warning disable CA1844
// The code that's violating the rule is on this line.
#pragma warning restore CA1844

To disable the rule for a file, folder, or project, set its severity to none in the configuration file.

[*.{cs,vb}]
dotnet_diagnostic.CA1844.severity = none

For more information, see How to suppress code analysis warnings.

See also

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4