Repository navigation
DE CSharp Keyword allows
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Handbuch C# · Praktischer Leitfaden
Mit der Antieinschränkung „allows ref struct“ können Sie eine ref struct als Argument an einen generischen Typ oder eine generische Methode übergeben. Es ist nicht erforderlich, dass jedes Argument eine Ref-Struktur ist. Code mit einem solchen T muss den Regeln der Linksicherheit folgen und kann kein Boxen durchführen. Anti-Einschränkungen werden nach anderen Einschränkungen geschrieben.
Speichern Sie dieses Beispiel separat als Example.cs. Führen Sie es unabhängig von den anderen Beispielen dieser Seite aus.
Example.cs:
// PROJECT-EXAMPLE
void Ignore<T>(T value) where T : allows ref struct { }
System.Span<int> values = stackalloc int[2];
Ignore(values);
System.Console.WriteLine(values.Length);Ergebnis:
2
static int Measure<T>(T value) where T : IMeasured, allows ref struct;
static void Reset<T>(scoped ref T value) where T : allows ref struct;using System;
public interface IMeasured { int Length { get; } }
public readonly ref struct NumberView : IMeasured
{
private readonly ReadOnlySpan<int> values;
public NumberView(ReadOnlySpan<int> values) => this.values = values;
public int Length => values.Length;
}
internal static class Program
{
public static void Main()
{
ReadOnlySpan<int> values = stackalloc int[] { 4, 8, 15 };
var view = new NumberView(values);
Console.WriteLine(Measure(view));
}
private static int Measure<T>(T value) where T : IMeasured, allows ref struct
=> value.Length;
}Ergebnis:
3
using System;
internal static class Program
{
public static void Main()
{
Span<int> scratch = stackalloc int[] { 1, 2, 3 };
int counter = 7;
Reset(ref scratch);
Reset(ref counter);
Console.WriteLine($"Span length: {scratch.Length}; counter: {counter}");
}
private static void Reset<T>(scoped ref T value) where T : allows ref struct
=> value = default!;
}Ergebnis:
Span length: 0; counter: 0
Offizielle Quelle: Microsoft Learn.
ClassicUO — Bad Newbie & C# Scripts IDE