ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 属性(C# 编程指南) 属性是一种成员,它提供灵活的机制来读取、写入或计算私有字段的值。属性可用作公共数据成员,但它们实际上是称为_“访问器”_的特殊方法。这使得可以轻松访问数据,还有助于提高方法的安全性和灵活性。 在此示例中,TimePeriod 类存储时间段。该类在内部以秒为单位存储时间,但是名为 Hours 的属性允许客户端以小时为单位指定时间。 Hours 属性的访问器执行小时与秒之间的转换。 ``` class TimePeriod { private double seconds; public double Hours { get { return seconds / 3600; } set { seconds = value * 3600; } } } class Program { static void Main() { TimePeriod t = new TimePeriod(); // Assigning the Hours property causes the 'set' accessor to be called. t.Hours = 24; // Evaluating the Hours property causes the 'get' accessor to be called. System.Console.WriteLine("Time in hours: " + t.Hours); } } // Output: Time in hours: 24 ``` ## 表达式主体定义 直接只返回表达式结果的属性很常见。下面的语法快捷方式使用 **=>** 来定义这些属性: ``` public string Name => First + " " + Last; ``` 属性必须为只读,并且你不能使用 **get** 访问器关键字。 ## 属性概述 * 属性允许类公开获取和设置值的公共方法,而隐藏实现或验证代码。 * [get](https://msdn.microsoft.com/zh-cn/library/ms228503.aspx) 属性访问器用于返回属性值,而 [set](https://msdn.microsoft.com/zh-cn/library/ms228368.aspx) 访问器用于分配新值。这些访问器可以具有不同的访问级别。有关详细信息,请参阅[限制访问器可访问性(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/75e8y5dd.aspx)。 * [value](https://msdn.microsoft.com/zh-cn/library/a1khb4f8.aspx) 关键字用于定义由 **set** 访问器分配的值。 * 不实现 **set** 访问器的属性均为只读。 * 对于不需要任何自定义访问器代码的简单属性,请考虑选择使用自动实现的属性的选项。有关详细信息,请参阅[自动实现的属性(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/bb384054.aspx)。 ## 相关章节 * [使用属性(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/w86s7x04.aspx) * [接口属性(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/64syzecx.aspx) * [属性和索引器之间的比较(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/4bsztef7.aspx) * [限制访问器可访问性(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/75e8y5dd.aspx) * [自动实现的属性(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/bb384054.aspx) ## C# 语言规范 有关详细信息,请参阅 [C# 语言规范](https://msdn.microsoft.com/zh-cn/library/ms228593.aspx)。该语言规范是 C# 语法和用法的权威资料。 ## 请参阅 [C# 编程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx) [使用属性(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/w86s7x04.aspx) [索引器(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/6x16t2tx.aspx)