Maison >développement back-end >C++ >Pourquoi la modification d'une propriété C# implémentée automatiquement entraîne-t-elle une erreur « Impossible de modifier la valeur de retour » ?
Les propriétés C# implémentées automatiquement offrent une approche simplifiée de l'encapsulation des données. Cependant, les tentatives de modification directe de ces propriétés peuvent conduire à l'erreur de compilation frustrante « Impossible de modifier la valeur de retour ».
Cette erreur se produit car les propriétés implémentées automatiquement renvoient une copie des données sous-jacentes lors de l'accès. Par conséquent, les modifications apportées à cette copie ne sont pas conservées ; ils n'affectent pas la valeur stockée d'origine.
Observez l'exemple suivant :
<code class="language-csharp">public Point Origin { get; set; } Origin.X = 10; // Results in CS1612 error</code>
L'erreur se produit car Point
est un type valeur (struct). L'accès à Origin
fournit une copie, pas une référence directe. La modification de la propriété X
de la copie laisse l'original Origin
inchangé.
La solution consiste à utiliser un type référence (classe) ou à employer une variable intermédiaire. Voici une approche corrigée :
<code class="language-csharp">Origin = new Point(10, Origin.Y);</code>
Ce code crée un nouvel objet Point
avec la coordonnée X
mise à jour et le réaffecte à la propriété Origin
. Puisque Origin
est un type référence, cette modification est correctement reflétée dans le magasin de support.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!