结构体Cannot modify the expression because it is not a variable

看代码中结构体和类输出的B C值

 class Program
    {
        static void Main(string[] args)
        {
            List<Te> myList = new List<Te>();//泛型list存放结构体
            Te myTe = new Te();
            myTe.A = 10;
            myList.Add(myTe);//结构体是值类型,向myList中添加了当前值,参考int类型
            myTe.B = 10;//对myTe.B变量赋值,但不能改变myList[0]的值
            //myList[0].C = 10;这行代码报错,因为myList[0]是个值,不能改变 
            //如何改myList[0].C的值    
            Te te=new Te();                      
            te.A = myList[0].A;
            te.B = myList[0].B;
            te.C = 5;
            myList[0] = te;

            Console.WriteLine(myList[0].A+"  "+myList[0].B+"  "+myList[0].C);//输出10 0 5
            Console.WriteLine(myTe.A + "  " + myTe.B + "  " + myTe.C);//输出10 10 0

            List<TestClass> myClass=new List<TestClass>();
            TestClass ts=new TestClass();
            ts.A = 10;
            myClass.Add(ts);//类是引用类型,向myClass中添加了引用
            ts.B = 10;//对ts.B变量赋值,myClass[0]存储的是引用,引用指向的存储值的地方和ts存储的引用指向的储存值的地方是同一个地方,myClass[0].B的值也改变
            //myClass[0].C = 10; 不报错
            Console.WriteLine(myClass[0].A + "  " + myClass[0].B + "  " + myClass[0].C);//输出10 10 0
            Console.WriteLine(ts.A + "  " +ts.B + "  " + ts.C);//输出10 10 0

            Console.ReadKey();
        }
        public struct Te
        {
            public int A { get; set; }
            public int B { get; set; }
            public int C { get; set; }
        }
    }

    public class TestClass
    {
        public int A;
        public int B;
        public int C;
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值