UnmanagedArray 2.1.3
dotnet add package UnmanagedArray --version 2.1.3
NuGet\Install-Package UnmanagedArray -Version 2.1.3
<PackageReference Include="UnmanagedArray" Version="2.1.3" />
<PackageVersion Include="UnmanagedArray" Version="2.1.3" />
<PackageReference Include="UnmanagedArray" />
paket add UnmanagedArray --version 2.1.3
#r "nuget: UnmanagedArray, 2.1.3"
#:package UnmanagedArray@2.1.3
#addin nuget:?package=UnmanagedArray&version=2.1.3
#tool nuget:?package=UnmanagedArray&version=2.1.3
Unmanaged Array
An Effective tool for unmanaged array in C#.
About
Array in C# is allocated in managed memory.
UnmanagedArray<T> in this library is allocated in unmanaged memory.
In other words, items in UnmanagedArray<T> is not collected by Garbage Collection.
Supported Types
The only type of item UnmanagedArray<T> supports is unmanaged type.
unmanaged type is int, float, recursive-unmanaged struct, and so on.
string, and other types which are class are NOT SUPPORTED.
(because reference types are allocated in managed memory on C#.)
Building from Source
$ git clone https://github.com/ikorin24/UnmanagedArray.git
$ cd UnmanagedArray
$ dotnet build src/UnmanagedArray/UnmanagedArray.csproj -c Release
Installation
Install from Nuget by package manager console (in Visual Studio).
https://www.nuget.org/packages/UnmanagedArray
PM> Install-Package UnmanagedArray
How to Use
The way of use is similar to normal array.
Unmanaged resources are release when an instance goes through the scope.
using UnmanageUtility;
// UnmanagedArray releases its memories when it goes through the scope.
using(var array = new UnmanagedArray<int>(10))
{
for(int i = 0;i < array.Length;i++)
{
array[i] = i;
}
}
If not use the using scope, you can release the memories by Dispose() method.
var array = new UnmanagedArray<int>(10);
array[3] = 100;
array.Dispose(); // The memories allocated in unmanaged is released here.
Of cource, LINQ is supported.
using(var array = Enumerable.Range(0, 10).ToUnmanagedArray())
using(var array2 = array.Where(x => x >= 5).ToUnmanagedArray()) {
for(int i = 0; i < array2.Length; i++) {
Console.WriteLine(array2[i]); // 5, 6, 7, 8, 9
}
}
NOTICE
UnmanagedArray<T> has Finalizer and releases its unmanaged resources automatically when you forget releasing that.
However, you have to release them explicitly ( by using scope or Dispose() ).
New Feature of ver 2.1.0
UnmanagedList<T> is available, which the way of use is similar to List<T>.
using(var list = new UnmanagedList<int>())
{
list.Add(4);
list.Add(9);
foreach(var num in list)
{
Console.WriteLine(num);
}
}
License and Credits
This is under MIT license.
This software includes the work that is distributed in the Apache License 2.0.
Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
Author
Release Note
2020/01/11 v1.0.0
- First release
2020/01/12 v1.0.1
- Performance improvement of iteration by
foreach, that is as faster as T[] (normal array).
2020/01/15 v1.0.2
- Great performance improvement of accessing to the item by index. (
array[i])
2020/04/30 v1.0.3
- Performance improvement.
- Add
GC.AddMemoryPressurein constructor andGC.RemoveMemoryPressurein destructor.
2020/04/30 v2.0.0
- Change namespace into
UnmanageUtility.
2020/06/07 v2.0.1
2020/07/27 v2.1.0-rc
- Add
UnmanagedList<T>.
2020/10/05 v2.1.0
- Performance improvement.
- Add some methods.
2020/11/26 v2.1.1
- Add
UnmanagedArray<T>.Emptystatic property. - Add property setter of
UnmanagedList<T>.Capacity.
2021/01/05 v2.1.2
- Add
UnmanagedArray<T>.AsSpanoverload methods. - Package for multi target frameworks. (net48, netcoreapp3.1, net5.0, netstandard2.0, netstandard2.1)
- Fix small bugs.
2021/02/10 v2.1.3
- Add
UnmanagedList<T>.Extendmethod.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. 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 is compatible. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 is compatible. 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. |
-
.NETCoreApp 3.1
- No dependencies.
-
.NETFramework 4.8
- System.Memory (>= 4.5.3)
-
.NETStandard 2.0
- System.Memory (>= 4.5.3)
-
.NETStandard 2.1
- System.Memory (>= 4.5.3)
-
net5.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on UnmanagedArray:
| Package | Downloads |
|---|---|
|
Akihabara
Mediapipe wrapper library. |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on UnmanagedArray:
| Repository | Stars |
|---|---|
|
lolo77777/OpenCVVision
使用OpenCvSharp创建常用功能集合
|