首页 新闻 会员 周边

C# 结构中的 set 问题

0
悬赏园豆:20 [已关闭问题] 关闭于 2019-12-19 22:16
class Program
    {
        static void Main(string[] args)
        {
            var a = new A()
            {
                b = new B()
                {
                    name = "1"
                }
            };
            //错误地方
            a.b.name = "1";
        }
    }

    public class A
    {
        public B b { get; set; }

        //如果是这样写则不会出错
        //public B b;
    }

    public struct B
    {
        public string name;
    }

会提示 无法修改“A.b”的返回值,因为它不是变量。想明白为什么会这样子

小小小屁孩的主页 小小小屁孩 | 初学一级 | 园豆:161
提问于:2019-12-19 21:30
< >
分享
所有回答(1)
1

值类型,属性的get访问器拿到的是对象的副本,对该副本的字段进行操作不会反应到源对象上,是一个无效操作。https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/compiler-messages/cs1612

LoveLan1314 | 园豆:202 (菜鸟二级) | 2019-12-26 23:26

太感谢了

支持(0) 反对(0) 小小小屁孩 | 园豆:161 (初学一级) | 2019-12-27 14:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册