You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# CS1612错误求助:无法修改Figur.Standort的返回值

问题解决:CS1612错误无法修改Figur.Standort的返回值

你的问题出在值类型的特性上:Pos是struct(值类型),当你访问Figur.Standort这个属性时,返回的是当前Pos值的一个临时副本。你试图修改这个副本的X和Y属性,但这个副本在语句结束后就会被丢弃,编译器不允许这种无意义的操作,所以抛出了CS1612错误。

下面给你两种可行的解决办法:

方法一:把Pos从struct改为class

将Pos定义为引用类型(class),这样访问Standort时返回的是对象引用,修改其X、Y会直接作用于原对象:

class Pos // 这里把struct改成class
{
    public int X { get; set; }
    public int Y { get; set; }
    public Pos(int x, int y)
    {
        X = x;
        Y = y;
    }
}

其他代码不需要修改,Bewegen方法里的代码就能正常工作。

方法二:保持Pos为struct,创建新实例重新赋值

如果想保留Pos作为值类型,需要在Bewegen方法中计算出新的坐标,创建一个新的Pos实例,再赋值给Standort属性:

public void Bewegen(int zugIndex)
{
    // 计算新的坐标
    int newX = Standort.X + Möglichkeiten[zugIndex].X;
    int newY = Standort.Y + Möglichkeiten[zugIndex].Y;
    // 创建新的Pos实例并赋值给Standort
    Standort = new Pos(newX, newY);
}

这样就绕过了修改临时副本的问题,直接更新Standort属性的整个值。

内容的提问来源于stack exchange,提问作者Sengur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 17:11:08