C# 属性(Property)

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋进学堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值