Maison > développement back-end > C++ > Pourquoi C# génère-t-il une erreur « Impossible de modifier la valeur de retour » lors de la modification des propriétés implémentées automatiquement ?

Pourquoi C# génère-t-il une erreur « Impossible de modifier la valeur de retour » lors de la modification des propriétés implémentées automatiquement ?

Susan Sarandon
Libérer: 2025-01-19 09:47:09
original
794 Les gens l'ont consulté

Why Does C# Throw a

Explication détaillée de l'erreur "Impossible de modifier la valeur de retour" en C#

Les propriétés implémentées automatiquement en C# offrent un moyen pratique de définir des propriétés, mais parfois, lorsque vous essayez de modifier la valeur de la propriété, cela peut entraîner une erreur « Impossible de modifier la valeur de retour ».

Veuillez consulter le code suivant :

<code class="language-csharp">public Point Origin { get; set; }

Origin.X = 10; // 产生 CS1612 错误</code>
Copier après la connexion

Ce code tente de définir la coordonnée X de la propriété Origin. Cependant, il signalera une erreur indiquant que la valeur de retour de la propriété ne peut pas être modifiée car ce n'est pas une variable.

Cause première : types de valeur et types de référence

Cette erreur se produit car Point est un type valeur (structure). Les types valeur sont copiés par valeur, ce qui signifie que lorsque vous attribuez un type valeur à une variable, une nouvelle copie est créée. Dans ce cas, lorsque vous accédez à la propriété Origin, vous accédez en réalité à une copie de la valeur Point, et non à la valeur d'origine stockée dans la classe.

Solution

Pour résoudre ce problème, vous avez deux options :

  1. Utiliser les types référence : Changer Pointez vers un type référence (classe) au lieu d'un type valeur. Les types référence sont copiés par référence, ce qui signifie que lorsque vous attribuez un type référence à une variable, le pointeur vers l'objet d'origine est copié. Cela permet de modifier l'objet d'origine directement via ses propriétés.
  2. Stocké dans une variable temporaire : Si vous souhaitez conserver Point comme type valeur, vous devez stocker le résultat de l'accès à la propriété dans une variable temporaire avant de la modifier. Par exemple :
<code class="language-csharp">Point temp = Origin;
temp.X = 10;
Origin = temp;</code>
Copier après la connexion

En stockant la valeur de la propriété dans la variable temp, vous créez une copie modifiable du type de valeur. Vous pouvez ensuite définir les propriétés de la copie modifiée.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal