Lire en anglais

Partager via


Erreur du compilateur CS0459

Impossible de prendre l'adresse d'une variable locale en lecture seule

En langage C#, trois scénarios communs génèrent des variables locales en lecture seule : foreach, usinget fixed. Dans chacun de ces cas, vous n’êtes pas autorisé à écrire dans la variable locale en lecture seule ou à prendre son adresse. Cette erreur est générée lorsque le compilateur se rend compte que vous essayez de prendre l’adresse d’une variable locale en lecture seule.

Exemple

L’exemple suivant génère l’erreur CS0459 lorsqu’une tentative est effectuée pour prendre l’adresse d’une variable locale en lecture seule dans une boucle foreach et dans un bloc d’instructions fixed :

C#
// CS0459.cs
// compile with: /unsafe

class Program
{
    public unsafe void M1()
    {
        int[] ints = new int[] { 1, 2, 3 };
        foreach (int i in ints)
        {
            int *j = &i;  // CS0459
        }

        fixed (int *i = &_i)
        {
            int **j = &i;  // CS0459
        }
    }

    private int _i = 0;
}

Notes

Le compilateur Roslyn a été mis à jour et cette erreur de compilateur a été supprimée à partir de Visual Studio 2017 version 15.5. Le code précédent est donc bien compilé avec cette version et versions ultérieures.