当前位置: 首页 > news >正文

“属性”详解

核心概念:属性可以存"任何东西"

属性的类型可以是:

类型例子说明
值类型intdoubleboolenum存一个具体的数值
引用类型string存一段文本
自定义类Product存一个对象(引用)
集合List<Product>存一堆对象
接口IDisposable存实现了该接口的任何对象

结论:属性不只能存基本数据,它能存任何类型的对象。

public Product Product { get; set; }拆解

public class Order { // 属性的类型是 Product(一个自定义类) // 属性的名字也叫 Product public Product Product { get; set; } }

例子理解

public class Person { public string Name { get; set; } // 人的名字(字符串) public int Age { get; set; } // 人的年龄(数字) public Dog Pet { get; set; } // 人的宠物(是一个 Dog 对象) }
属性存的什么类型
Name"张三"string(文本)
Age25int(数字)
Pet🐕 一只真正的狗对象Dog(自定义类)

Pet属性存的不是"文本"也不是"数字",而是"一只狗"——一个完整的对象,这个对象有自己的属性(名字、品种、年龄)和方法(叫、跑)。

实际代码演示

// 商品类 public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } } // 订单类 public class Order { public int OrderId { get; set; } public DateTime CreateTime { get; set; } // 这个属性指向一个 Product 对象 public Product Product { get; set; } } // 使用 class Program { static void Main() { // 1. 先创建一个商品对象 Product phone = new Product { Id = 1, Name = "手机", Price = 3999 }; // 2. 创建一个订单 Order order = new Order { OrderId = 1001, CreateTime = DateTime.Now, Product = phone // 把商品对象赋给订单的 Product 属性 }; // 3. 通过订单访问商品信息 Console.WriteLine(order.Product.Name); // 手机 Console.WriteLine(order.Product.Price); // 3999 } }
order 对象 ├── OrderId: 1001 ├── CreateTime: ... └── Product ──────→ phone 对象 ├── Id: 1 ├── Name: "手机" └── Price: 3999

order.Product存的不是整个手机的全部数据副本,而是指向那个手机对象的"引用"(像是一个遥控器)

为什么需要这种写法?

// ❌ 不用对象属性——把商品的所有字段复制到订单里 public class Order { public int OrderId { get; set; } public int ProductId { get; set; } // 复制商品ID public string ProductName { get; set; } // 复制商品名 public decimal ProductPrice { get; set; } // 复制商品价格 // ... 商品有100个字段,要复制100次? } // ✅ 用对象属性——直接关联一个商品对象 public class Order { public int OrderId { get; set; } public Product Product { get; set; } // 一个引用搞定! }
http://www.cnnetsun.cn/news/2620317.html

相关文章:

  • 回译评估:揭示多语言大模型真实能力的压力测试与实操指南
  • Arduino绘图机器人:传感器融合与自主决策的嵌入式实践
  • Keil MDK 5.25调试崩溃问题分析与解决方案
  • Sora 2动效设计终极 checklist:覆盖WebGPU兼容性、无障碍动画开关适配、深色模式过渡曲线等19项GA前必验项
  • Sora 2神经辐射场生成落地陷阱大全(92%工程师踩坑的5类场景+实时纠错代码片段)
  • Arduino智能小车实战:从传感器融合到状态机控制
  • AI 智能体时代,为什么 45% 的人会走向一人公司?
  • 构建免费欧洲金融数据MCP服务器:开源方案与工程实践
  • 科研绘图避坑指南
  • 别再只记AES了!聊聊DES、IDEA这些‘老家伙’在实战中的隐藏用法与安全陷阱
  • 哈夫曼编码
  • 【Unity Shader URP】水面效果 实战教程
  • 构建可靠RAG系统:数据摄取流水线核心环节与实战优化
  • 5分钟快速上手:applera1n激活锁绕过工具终极指南
  • 构建统一LLM API调用层:适配OpenAI、Claude、Gemini与开源模型
  • 别再只用GeoHash了!用Uber H3六边形网格搞定空间数据分析(Python实战)
  • 别再死记硬背了!用Python+MATLAB/Simulink,手把手带你仿真二阶系统的‘稳、快、准’
  • rtklib 2.4.3源码在VS2019中的高效调试技巧:从单步跟踪到实时变量监控
  • Unity ShaderGraph实战:用一张贴图和几个节点,5分钟搞定动态火焰特效
  • 哥斯拉流量分析实战:用Wireshark解密NewStarCTF Week4的WebShell通信
  • TP4056锂电池充电电路设计:解决嵌入式设备充电重启与续航难题
  • 基于树莓派Pico W与CircuitPython的辅助运动玩具设计与实现
  • 2026年口碑封口机制造厂专业推荐
  • Agent设计模式
  • 做搜索和内容生态来看!AI 原生搜索时代的架构跃迁与 GEO
  • Deepseek-V4-Flash 快速部署与调用实战指南
  • 受载煤体表面裂纹扩展规律与声电效应实验及应用方案【附数据】
  • 防雷接地计算规则
  • Go语言泛型方法提案:打破限制,增强代码编写能力
  • Ai2Psd:如何高效实现AI到PSD的专业矢量图层转换?