C# 中的属性
2022/7/13 14:20:16
本文主要是介绍C# 中的属性,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
属性通过属性访问器访问,即get;set;方法
语法
- 没有显示声明get;set;方法
public class Person { public string FirstName; // 没有显示声明get;set;方法 }
- 显示声明get;set;
public class Person { public string FirstName { get; set; } }
- 给属性一个默认值,对于只读属性有最大作用
public class Person { public string FirstName { get; private set; } = "zhangsan"; }
- 自定义存储,即声明一个field控制属性赋值读取
public class Person { public string FirstName { get { return firstName; } set { firstName = value; } } private string firstName; }
- 升级一下使用lamda表达式
public class Person { public string FirstName { get => firstName; set => firstName = value; } private string firstName; }
- 限制只在构造函数初始化属性
public class Person { public Person(string firstName) => this.FirstName = firstName; public string FirstName { get; } }
- 计算属性
public class Person { public string FirstName { get; set; } public string LastName { get; set; } public string FullName => $"{FirstName} {LastName}"; }
- 缓存计算属性
public class Person { private string firstName; public string FirstName { get => firstName; set { firstName = value; fullName = null; } } private string lastName; public string LastName { get => lastName; set { lastName = value; fullName = null; } } private string fullName; public string FullName { get { if (fullName == null) fullName = $"{FirstName} {LastName}"; return fullName; } } }
- 不被序列化
public class Person { public string FirstName { get; set; } public string LastName { get; set; } [field:NonSerialized] public int Id { get; set; } public string FullName => $"{FirstName} {LastName}"; }
- 观察者模式
public class Person : INotifyPropertyChanged { public string FirstName { get => firstName; set { if (string.IsNullOrWhiteSpace(value)) throw new ArgumentException("First name must not be blank"); if (value != firstName) { firstName = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(FirstName))); } } } private string firstName; public event PropertyChangedEventHandler PropertyChanged; // remaining implementation removed from listing }
参考:https://docs.microsoft.com/zh-cn/dotnet/csharp/properties
这篇关于C# 中的属性的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#