InlineCollection 1.0.0
See the version list below for details.
dotnet add package InlineCollection --version 1.0.0
NuGet\Install-Package InlineCollection -Version 1.0.0
<PackageReference Include="InlineCollection" Version="1.0.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
<PackageVersion Include="InlineCollection" Version="1.0.0" />
<PackageReference Include="InlineCollection"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add InlineCollection --version 1.0.0
#r "nuget: InlineCollection, 1.0.0"
#:package InlineCollection@1.0.0
#addin nuget:?package=InlineCollection&version=1.0.0
#tool nuget:?package=InlineCollection&version=1.0.0
InlineCollection
English | 日本語
Overview
InlineCollection is a library that provides zero-allocation stack-based collections for Unity.
Since Unity uses a relatively old C# version (C# 10), it cannot utilize features like InlineArray or collection expressions that are available in C# 12 and later.
While stackalloc can be used in Unity, it can only create Spans of unmanaged types and cannot allocate arrays of managed types on the stack.
This library adds:
- An
InlineCollectionfeature equivalent to theInlineArrayavailable in C# 12 and later - A convenient functionality to convert
ValueTupletoSpan
Installation
dotnet
dotnet add package
Usage
Tuple To Span
You can convert a ValueTuple to a Span:
var span = (1, 2, 3).AsSpan();
foreach (var i in span)
{
Debug.Log(i);
}
Note that all elements in the tuple must be of the same type.
InlineCollection
You can create array-like structures by adding the InlineCollection attribute to a partial struct:
[InlineCollection(length: 3)]
public partial struct SampleInlineCollection<T> {}
Usage example:
using InlineCollection;
var sample = new SampleInlineCollection<string>("a", "b", "C");
sample[0] = "a";
foreach (var s in sample)
{
Debug.Log(s);
}
You can also convert it to a Span:
Span<string> span = sample.AsSpan();
Additionally, you can specify a specific element type by adding type information as an argument to the InlineCollection attribute:
[InlineCollection(elementType: typeof(int), length: 3)]
public partial struct SampleInlineCollection {}
Example:
var sample = new SampleInlineCollection(0, 1, 2);
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
This package has no dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.