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