Compilerfout CS1666
U kunt geen buffers met vaste grootte gebruiken die zijn opgenomen in niet-opgeloste expressies. Probeer de vaste instructie te gebruiken.
Deze fout treedt op als u de buffer met vaste grootte gebruikt in een expressie die betrekking heeft op een exemplaar dat niet zelf is opgelost. De runtime is vrij om het niet-opgeloste exemplaar te verplaatsen om geheugentoegang te optimaliseren, wat kan leiden tot fouten bij het gebruik van de buffer met vaste grootte. Gebruik de fixed
instructie om deze fout te voorkomen.
In het volgende voorbeeld wordt CS1666 gegenereerd.
// 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);
}
}
.NET-feedback
.NET is een open source project. Selecteer een koppeling om feedback te geven: