Compilerfehler CS1666
Sie können keine Puffer fester Größe in ungebundenen Ausdrücken verwenden. Verwenden Sie die fixed-Anweisung.
Dieser Fehler tritt auf, wenn Sie einen Puffer mit fester Größe in einem Ausdruck mit einer Instanz verwenden, die selbst nicht gebunden ist. Die Runtime kann die ungebundene Klasse verschieben, um den Speicherzugriff zu optimieren, was jedoch bei Verwendung eines Puffers fester Größe zu Fehlern führen kann. Um diesen Fehler zu vermeiden, verwenden Sie die fixed
-Anweisung.
Beispiel
Im folgenden Beispiel wird CS1666 generiert:
// CS1666.cs
// compile with: /unsafe /target:library
unsafe struct S
{
public fixed int buffer[1];
}
unsafe class Test
{
S field = new S();
private bool example1()
{
return (field.buffer[0] == 0); // CS1666 error
}
private bool example2()
{
// OK
fixed (S* p = &field)
{
return (p->buffer[0] == 0);
}
}
private bool example3()
{
S local = new S();
return (local.buffer[0] == 0);
}
}
Zusammenarbeit auf GitHub
Die Quelle für diesen Inhalt finden Sie auf GitHub, wo Sie auch Issues und Pull Requests erstellen und überprüfen können. Weitere Informationen finden Sie in unserem Leitfaden für Mitwirkende.