C# 無法修改返回值,因為它不是變數
阿新 • • 發佈:2021-06-22
結構體通過屬性訪問修改的時候會出現以下編譯錯誤:
▲ 錯誤提示。結構體不能像類一樣去操作,問題可能是因為:結構體是值型別的原因。
試試結構體整體賦值。
▲ 結構體整體賦值,不會編譯錯誤。這個現象不能復現了?還沒弄清什麼原因。下面是可以執行輸出,而不報錯:
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