Erreur « Impossible de modifier la valeur de retour » en C#
Lors de l'utilisation de propriétés implémentées automatiquement, une erreur « Impossible de modifier la valeur de retour » peut se produire, par exemple :
<code class="language-csharp">public Point Origin { get; set; } Origin.X = 10; // 出现 CS1612 错误</code>
Analyse des causes d'erreur
Cette erreur se produit car Point
est un type valeur (structure). Lors de l'accès à l'attribut Origin
, une copie de la valeur contenue dans la classe est renvoyée, pas la valeur elle-même. La modification des propriétés d'une copie n'affecte pas la valeur d'origine.
Solution
Pour résoudre ce problème, la valeur sous-jacente doit être modifiée directement. Pour les types valeur, cela peut être réalisé en stockant une copie dans une variable temporaire et en définissant une propriété sur cette variable :
<code class="language-csharp">Point originCopy = Origin; originCopy.X = 10; Origin = originCopy;</code>
Vous pouvez également créer votre propre champ de sauvegarde pour stocker le type de valeur et modifier directement le champ :
<code class="language-csharp">private Point _origin; public Point Origin { get { return _origin; } set { _origin = value; } }</code>
De cette façon, vous pouvez modifier directement l'attribut Origin
:
<code class="language-csharp">Origin.X = 10; // 此行现在可以正常工作,不会报错</code>
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!