Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les membres struct ne peuvent pas retourner « this » ou d'autres membres d'instance par référence
Exemple
L’exemple suivant génère l’avertissement CS8170 :
Les types de valeur (c’est-à-dire struct
) sont généralement alloués sur la pile. Un type de valeur alloué sur la pile devient non valide, quittant l’étendue dans laquelle il a été déclaré. Le compilateur évite une référence à une variable qui devient non valide en quittant l’étendue en générant cette erreur.
// CS8170.cs (8,14)
struct Program
{
public int d;
public ref int M()
{
return ref d;
}
}
public class Other
{
public void Method()
{
var p = new Program();
var d = p.M();
}
}
Pour corriger cette erreur
La modification de la méthode en une autre valeur que retour ref
corrige cette erreur :
delegate void D();
struct Program
{
public event D d;
public D M()
{
return d;
}
}
Si une référence à un membre est requise, envisagez d’étendre l’étendue de la valeur. Par exemple :
public struct Program
{
public int d;
}
public static class Extensions
{
public static ref readonly int RefD(this in Program program)
{
return ref program.d;
}
}
public class Other
{
public void Method()
{
var p = new Program();
var d = p.RefD();
}
}
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :