ConstTypeArgs.Nints
1.0.0
dotnet add package ConstTypeArgs.Nints --version 1.0.0
NuGet\Install-Package ConstTypeArgs.Nints -Version 1.0.0
<PackageReference Include="ConstTypeArgs.Nints" Version="1.0.0" />
paket add ConstTypeArgs.Nints --version 1.0.0
#r "nuget: ConstTypeArgs.Nints, 1.0.0"
// Install ConstTypeArgs.Nints as a Cake Addin #addin nuget:?package=ConstTypeArgs.Nints&version=1.0.0 // Install ConstTypeArgs.Nints as a Cake Tool #tool nuget:?package=ConstTypeArgs.Nints&version=1.0.0
Nint Const Type Arguments
Const type arguments (also called const type args) are types used to pass constant & static values to generics through type parameters. These values are available at compile-time and can be used in static contexts, such as static constructors, static fields, and static methods. This can provide enhanced type safety, compile-time polymorphism, performance improvements, and more.
You can use types in the ConstTypeArgs.Nints
namespace for passing nint
values as const type arguments.
Usage scenarios include:
- Static configuration,
- Eliminating unnecessary instance constructors,
- "Passing" values to type initializers,
- and more.
The following is a simple Hello World example to demonstrate how this works:
using ConstTypeArgs.Nints;
public class Foo<TSize>
where TSize : K_Nint
{
public static readonly int[] FooArray = new int[TSize.Value];
static Foo()
{
Console.WriteLine($"Integer array size is {FooArray.Length}");
}
}
// Elsewhere
var foo = new Foo<_3>(); // Outputs "Integer array size is 3"
foo = new Foo<_16>(); // Outputs "Integer array size is 16"
The following shows how a new nint
const type argument could be defined.
public readonly struct _32 : K_Nint<_32>
{ public static nint Value => 32; }
You can also create new domain-specific nint
const type arguments like so:
public sealed class DefaultInitialCollectionSize : K_Nint<_32>;
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. 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. |
-
net8.0
- ConstTypeArgs.Core (>= 1.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on ConstTypeArgs.Nints:
Package | Downloads |
---|---|
ConstTypeArgs.Delegates
Builds on types of the ConstTypeArgs.Core library to provide const type arguments that allow you to use generic parameters to "pass" delegates to generics. This provides an analog to type specialization in C++, and can be used for scenarios such as: * Static polymorphism, * Eliminating unnecessary instance constructors, * "Passing" values to type initializers, * And a more. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 150 | 7/30/2024 |
Initial release.