Skip to content

Convert a stream to a byte array: retarget net10.0, add ReadExactly, CopyTo and the reverse direction - #2219

Open
vladimir-pecanac-main wants to merge 1 commit into
CodeMazeBlog:mainfrom
vladimir-pecanac-main:seo/89425-create-byte-array-from-stream-in-csharp
Open

vladimir-pecanac-main wants to merge 1 commit into
CodeMazeBlog:mainfrom
vladimir-pecanac-main:seo/89425-create-byte-array-from-stream-in-csharp

Conversation

@vladimir-pecanac-main

Copy link
Copy Markdown
Collaborator

Updates the sample behind https://code-maze.com/create-byte-array-from-stream-in-csharp/.

Both projects move from net7.0 to net10.0. Packages go to current stable: BenchmarkDotNet 0.15.8, Microsoft.NET.Test.Sdk 18.10.1, xunit 2.9.3, xunit.runner.visualstudio 4.0.0, coverlet.collector 10.0.1. xunit stays the test framework for this folder.

New code:

  • UseReadExactly(Stream) and UseCopyTo(Stream) on ConvertStreamToByteArray, the two calls the rewritten article recommends for the known-length and unknown-length cases.
  • UseMemoryStreamConstructor(byte[]) and UseWritableMemoryStream(byte[]) for the reverse direction, which the article now covers.
  • Four xunit tests for the four methods, following the existing GivenA..._When..._Then... naming.
  • UseReadExactly and UseCopyTo added as [Benchmark] methods, each opening its own FileStream exactly as the five existing ones do, so the published benchmark table measures the recommended methods.

Verified on SDK 10.0.302 against runtime 10.0.10: dotnet build -c Release is 0 errors and 0 warnings, dotnet test is 9 of 9 passing, and the full DefaultJob benchmark run completes with UseReadExactly fastest at 350.3 us and 718.14 KB allocated.

Only this article's folder is touched.

…CopyTo and the reverse direction

Retargets both projects from net7.0 to net10.0 and moves the packages to current
stable versions (BenchmarkDotNet 0.15.8, Microsoft.NET.Test.Sdk 18.10.1, xunit 2.9.3,
xunit.runner.visualstudio 4.0.0, coverlet.collector 10.0.1).

Adds UseReadExactly() and UseCopyTo() to ConvertStreamToByteArray, which are the two
calls the article now recommends, and UseMemoryStreamConstructor() and
UseWritableMemoryStream() for the reverse direction. Four xunit tests cover them, and
UseReadExactly and UseCopyTo also join ConvertMethodsBenchmark so the published
benchmark measures the recommended methods.

Build is clean and tests run 9 of 9 on SDK 10.0.302.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant