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
Susan Sarandonoriginal
2025-01-19 09:47:09796parcourir

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>

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>

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!

Déclaration:
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