C# 属性(Property)
C# 中的属性(Property)是类和结构体中用于封装数据的成员。它们提供了一种方式来定义类成员的访问和设置规则,通常用于隐藏字段(Fields)的内部实现细节,同时提供控制数据访问的机制。
属性可以看作是对字段的包装器,通常由 get 和 set 访问器组成。
属性(Property)不会确定存储位置。相反,它们具有可读写或计算它们值的 访问器(accessors)。
例如,有一个名为 Student 的类,带有 age、name 和 code 的私有域。我们不能在类的范围以外直接访问这些域,但是我们可以拥有访问这些私有域的属性。
基本语法
<span style="background-color:#ecf4ee"><span style="color:#333333"><span style="color:#55859b">public</span> <span style="color:#55859b">class</span> <span style="color:#478c90">Person</span>
<span style="color:#171c19">{</span>
<span style="color:#55859b">private</span> <span style="color:#55859b">string</span><span style="color:#171c19"> name</span><span style="color:#171c19">;</span>
<span style="color:#55859b">public</span> <span style="color:#55859b">string</span> <span style="color:#478c90">Name</span>
<span style="color:#171c19">{</span>
<span style="color:#55859b">get</span> <span style="color:#171c19">{</span> <span style="color:#55859b">return</span><span style="color:#171c19"> name</span><span style="color:#171c19">;</span> <span style="color:#171c19">}</span>
<span style="color:#55859b">set</span> <span style="color:#171c19">{</span><span style="color:#171c19"> name </span><span style="color:#171c19">=</span><span style="color:#171c19"> value</span><span style="color:#171c19">;</span> <span style="color:#171c19">}</span>
<span style="color:#171c19">}</span>
<span style="color:#171c19">}</span></span></span>
以上代码中, 属性封装了私有字段 。访问器用于获取字段值,而 访问器用于设置字段值。Namenamegetset
自动实现的属性
如果你只需要一个简单的属性,C# 允许使用自动实现的属性,这样你不需要显式地定义字段。
<span style="background-color:#ecf4ee"><span style="color:#333333"><span style="color:#55859b">public</span> <span style="color:#55859b">class</span> <span style="color:#478c90">Person</span>
<span style="color:#171c19">{</span>
<span style="color:#55859b">public</span> <span style="color:#55859b">string</span> <span style="color:#478c90">Name</span> <span style="color:#171c19">{</span> <span style="color:#55859b">get</span><span style="color:#171c19">;</span> <span style="color:#55859b">set</span><span style="color:#171c19">;</span> <span style="color:#171c19">}</span>
<span style="color:#171c19">}</span></span></span>
在这种情况下,编译器会自动为 Name 属性生成一个私有的匿名字段来存储值。
只读属性
如果你只需要一个只读属性,可以省略 set 访问器。
<span style="background-color:#ecf4ee"><span style="color:#333333"><span style="color:#55859b">public</span> <span style="color:#55859b">class</span> <span style="color:#478c90">Person</span>
<span style="color:#171c19">{</span>
<span style="color:#55859b">public</span> <span style="color:#55859b">string</span> <span style="color:#478c90">Name</span> <span style="color:#171c19">{</span> <span style="color:#55859b">get</span><span style="color:#171c19">;</span> <span style="color:#171c19">}</span>
<span style="color:#55859b">public</span> <span style="color:#478c90">Person</span><span style="color:#171c19">(</span><span style="color:#55859b">string</span><span style="color:#171c19"> name</span><span style="color:#171c19">)</span>
<span style="color:#171c19">{</span>
<span style="color:#478c90">Name</span> <span style="color:#171c19">=</span><span style="color:#171c19"> name</span><span style="color:#171c19">;</span>
<span style="color:#171c19">}</span>
<span style="color:#171c19">}</span></span></span>
只写属性
类似地,如果你只需要一个只写属性,可以省略 get 访问器。
<span style="background-color:#ecf4ee"><span style="color:#333333"><span style="color:#55859b">public</span> <span style="color:#55859b">class</span> <span style="color:#478c90">Person</span>
<span style="color:#171c19">{</span>
<span style="color:#55859b">private</span> <span style="color:#55859b">string</span><span style="color:#171c19"> name</span><span st

最低0.47元/天 解锁文章
1141

被折叠的 条评论
为什么被折叠?



