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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了