C# 无法修改返回值,因为它不是变量


结构体通过属性访问修改的时候会出现以下编译错误:

▲ 错误提示

▲ 错误提示。

结构体不能像类一样去操作,问题可能是因为:结构体是值类型的原因。

试试结构体整体赋值

▲ 结构体整体赋值,不会编译错误。

这个现象不能复现了?还没弄清什么原因。下面是可以运行输出,而不报错:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CsTestWinform
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            //Application.EnableVisualStyles();
            //Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new Form1());

            Test test = new Test() { HuObj = new Hu() { Name = "Hi", Age = 12 } };
            test.ShowHu();

            Hu hu = new Hu() { Name = "Hello", Age = 10};
            test.HuObj.Name = hu.Name;
            test.HuObj.Age = hu.Age;
            test.ShowHu();

            Console.ReadKey();
        }
    }

    public class Test
    {
        public Hu HuObj;

        public void ShowHu()
        {
            Console.WriteLine(HuObj.Name);
            Console.WriteLine(HuObj.Age.ToString());

            // 下面这样赋值,没有出现编译错误
            HuObj.Name = "Ok";
            HuObj.Age = 1;
            Console.WriteLine(HuObj.Name);
            Console.WriteLine(HuObj.Age.ToString());
        }
    }

    public struct Hu
    {
        public string Name { get; set; }
        public int Age { get; set; }

        //public Hu(string name, int age)
        //{
        //    Name = name;
        //    Age = age;
        //}
    }
}

输出:

Hi
12
Ok
1
Hello
10
Ok
1


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM