C#中属性和成员变量的区别说明
时间:2022-02-17 22:36:57
一个类,有时候搞不清楚到底用成员变量还是属性。
如:
成员变量
public string Name;
或者用属性
private string name
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
属性与成员变量类似,它们都提供数据存储,但属性的功能远比成员变量强大。属性由特殊方法(Get 和 Set 访问器)访问。Get 和 Set 访问器允许在设置或检索属性之后验证属性值、执行其他代码或执行其他任务
例如
成员变量这样写
public readonly string Name;
那还是可以是只读了
private string name
public string Name
{
get
{
return name;
}
}
面向对象的编程方法是要抽象、封装;在类中,定义的变量是正对类本身而言,我们把它们叫做域。它可以为public ,private等;属性是针对外部看到的类的特性,是类展示给外部使用者的特性。前面我们讲到了域可以为public,但这样把域申明为public将 不利于类的封装,因为外部使用者可以对类进行直接修改。所以我们就可以用到属性,我们只是公开它们的属性,至于如何对其进行赋值(set)如何进行取值 (get)都已经进行了封装,对于类外部是不可见的。对于外部使用者来说只能够使用它,不能控制它,如何控制操作是由类自身决定的。你理解了吗?
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
c# 值类型实例构造器
Lombok基本注解之@SneakyThrows的作用
![](https://img.aspxhome.com/file/2023/0/77340_0s.png)
C#面向对象设计原则之接口隔离原则
详解idea maven nexus 常见命令配置
![](https://img.aspxhome.com/file/2023/1/62731_0s.png)
Android6.0开发中屏幕旋转原理与流程分析
Android 读取资源文件实例详解
spring boot security设置忽略地址不生效的解决
Winform下实现图片切换特效的方法
spring boot 全局异常处理方法汇总
Springboot动态切换数据源的具体实现与原理分析
![](https://img.aspxhome.com/file/2023/8/70918_0s.png)
Java开发利器之Guava Cache的使用教程
Java网络编程实例——简单模拟在线聊天
![](https://img.aspxhome.com/file/2023/6/77476_0s.png)
Java Web学习之Cookie和Session的深入理解
![](https://img.aspxhome.com/file/2023/0/77490_0s.jpg)
Java实现简易Web服务器
Spring Boot插件spring tool suite安装及使用详解
![](https://img.aspxhome.com/file/2023/4/71844_0s.png)
Spring Cloud Gateway去掉url前缀
解决Java中的java.io.IOException: Broken pipe问题
![](https://img.aspxhome.com/file/2023/4/94384_0s.png)