【干货】大模型时代的数字员工革命:6大行业实战案例与最佳实践!
2025/12/17 1:27:35
| 概念 | 定义 | 作用 | 访问权限 | 示例 |
|---|---|---|---|---|
| 字段 | private string name; | 存储数据 | 通常私有 | private int age; |
| 属性 | public string Name { get; set; } | 访问数据 | 通常公有 | public int Age { get; set; } |
csharp
private string _name; // 私有字段 public string Name // 公有属性 { get { return _name; // 返回字段值 } set { _name = value; // 设置字段值 } }csharp
// 如果只是简单传递值,可以简化 private int _id; public int Id { get { return _id; } set { _id = value; } }csharp
// 编译器自动生成私有字段 public bool Sex { get; set; } public int Age { get; set; }csharp
// 本质:一个设置值的方法 public string Name { set // 相当于:public void SetName(string value) { _name = value; // value 是用户传入的值 } } // 使用:p.Name = "张三"; // 相当于:p.SetName("张三");csharp
// 本质:一个获取值的方法 public string Name { get // 相当于:public string GetName() { return _name; } } // 使用:string name = p.Name; // 相当于:string name = p.GetName();csharp
private int _age; public int Age { get { return _age; } set { if (value < 0 || value > 200) throw new Exception("年龄必须在0-200之间");//做一个限定值 不在值内报异常 _age = value; } }csharp
private string _name; public string Name { get { Console.WriteLine("获取Name值"); return _name + " 视觉67班"; // 返回时添加额外信息 } set { Console.WriteLine($"设置Name值: {value}"); _name = value; } }csharp
// 只读属性(只有get) public string Id { get; } = Guid.NewGuid().ToString(); // 私有set public string Name { get; private set; } // 只写属性(不常见) private string _secret; public string Secret { set { _secret = value; } }csharp
// ❌ 不好:直接暴露字段 public int Age; // 外部可以直接设置为负值 // ✅ 好:通过属性控制 private int _age; public int Age { get { return _age; } set { if (value >= 0 && value <= 150) _age = value; } }csharp
// 第一版:直接使用字段 public int Score; // 第二版:改为属性,添加验证 private int _score; public int Score { get { return _score; } set { if (value >= 0 && value <= 100) _score = value; } } // 外部代码无需修改,仍然使用 obj.Scorecsharp
// WPF、WinForms 等 UI 框架支持属性绑定 public string UserName { get; set; } // 可以绑定到 TextBoxcsharp
public string Name { get { return Name; } // ❌ 递归调用自身 set { Name = value; } // ❌ 递归调用自身 } // ✅ 正确:引用字段 public string Name { get { return _name; } // ✅ set { _name = value; } // ✅ }csharp
public int Score { get { return ???; } // ❌ 没有字段可返回 set { ??? = value; } // ❌ 没有字段可赋值 } // ✅ 正确:先定义字段 private int _score; public int Score { get { return _score; } set { _score = value; } }字段存储数据要私有,属性访问数据要公有。Set 是设置值的方法,Get 是获取值的方法。需要验证用完整属性,简单情况用自动属性。