結構體通過屬性訪問修改的時候會出現以下編譯錯誤:
▲ 錯誤提示。
結構體不能像類一樣去操作,問題可能是因為:結構體是值類型的原因。
試試結構體整體賦值。
▲ 結構體整體賦值,不會編譯錯誤。
這個現象不能復現了?還沒弄清什么原因。下面是可以運行輸出,而不報錯:
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