Everyone is writing about how great the new type Span<T>
is so I eagerly wanted to start rewriting a couple of methods in my libraries but where do I actually find it? I've updated Visual Studio 2017 to the latest version 15.5.0 where the change-log says:
The C# compiler now supports the 7.2 set of language features including:
- Support for the
Span<T>
type being used throughout Kestrel and CoreFX via the ref struct modifier.
but when I try to use it my code I'm getting an error and intellisense cannot resolve it. It's a .net 4.6.2 project and the language version is set to latest minor.
Do I need to install some NuGet package in order to be able to use it? I can't figure this out.
A Span<T> represents a contiguous region of arbitrary memory. A Span<T> instance is often used to hold the elements of an array or a portion of an array. Unlike an array, however, a Span<T> instance can point to managed memory, native memory, or memory managed on the stack.
A Span<> is an allocation-free representation of contiguous regions of arbitrary memory. Span<> is implemented as a ref struct object that contains a ref to an object T and a length. This means that a Span in C# will always be allocated to stack memory, not heap memory.
Then you will get n more inputs corresponding to each index of the array. And you are required to find the span of the array, which is defined as the difference between max and min value of the array.
You need to install prerelease version (check "Include prerelease" checkbox in nuget manager) of System.Memory
package. Then just use Span
(it's in System
namespace).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With