Span<T>.GetPinnableReference Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Retourneert een verwijzing naar een object van het type T dat kan worden gebruikt voor het vastmaken.
Deze methode is bedoeld ter ondersteuning van .NET compilers en is niet bedoeld om door gebruikerscode aan te roepen.
public:
T % GetPinnableReference();
public ref T GetPinnableReference();
member this.GetPinnableReference : unit -> 'T
Public Function GetPinnableReference () As T
Retouren
Een verwijzing naar het element van de spanwijdte op index 0 of null als de spanwijdte leeg is.
Voorbeelden
In het volgende voorbeeld ziet u hoe u een matrix met gehele getallen maakt, vastgemaakt en elk element naar de console schrijft.
using System;
// Note: you must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe
public class Example
{
public static unsafe void Main()
{
int[] array = CreateInt32Array();
// Create a span, pin it, and print its elements.
Span<int> span = array.AsSpan();
fixed (int* spanPtr = span)
{
Console.WriteLine($"Span contains {span.Length} elements:");
for (int i = 0; i < span.Length; i++)
{
Console.WriteLine(spanPtr[i]);
}
Console.WriteLine();
}
// Create a read-only span, pin it, and print its elements.
ReadOnlySpan<int> readonlyspan = array.AsSpan();
fixed (int* readonlyspanPtr = readonlyspan)
{
Console.WriteLine($"ReadOnlySpan contains {readonlyspan.Length} elements:");
for (int i = 0; i < readonlyspan.Length; i++)
{
Console.WriteLine(readonlyspanPtr[i]);
}
Console.WriteLine();
}
}
private static int[] CreateInt32Array()
{
return new int[] { 100, 200, 300, 400, 500 };
}
}
// The example displays the following output:
// Span contains 5 elements:
// 100
// 200
// 300
// 400
// 500
//
// ReadOnlySpan contains 5 elements:
// 100
// 200
// 300
// 400
// 500
#nowarn "9"
#nowarn "51"
open System
open FSharp.NativeInterop
let createInt32Array () =
[| 100; 200; 300; 400; 500 |]
[<EntryPoint>]
let main _ =
let array = createInt32Array()
// Create a span, pin it, and print its elements.
let span = array.AsSpan()
let spanPtr = &&span.GetPinnableReference()
printfn $"Span contains {span.Length} elements:"
for i = 0 to span.Length - 1 do
printfn $"{NativePtr.get spanPtr i}"
printfn ""
// Create a read-only span, pin it, and print its elements.
let readonlyspan: ReadOnlySpan<int> = array.AsSpan()
let readonlyspanPtr = &&readonlyspan.GetPinnableReference()
printfn $"ReadOnlySpan contains {readonlyspan.Length} elements:"
for i = 0 to readonlyspan.Length - 1 do
printfn $"{NativePtr.get readonlyspanPtr i}"
printfn ""
0
// The example displays the following output:
// Span contains 5 elements:
// 100
// 200
// 300
// 400
// 500
//
// ReadOnlySpan contains 5 elements:
// 100
// 200
// 300
// 400
// 500
Opmerkingen
Toepassingen mogen niet rechtstreeks aanroepen GetPinnableReference. In plaats daarvan moeten bellers de normale syntaxis voor het vastmaken van hun taal gebruiken, zoals de instructie van fixed C#.
Als u een Span<char>vastmaken maakt, wordt char* uitgegaan dat het resultaat niet null-beëindigd is. Dit gedrag verschilt van het vastmaken van een string, waarbij het resulterende char* resultaat gegarandeerd null-beëindigd is.