C#属性 get和set如何使用

C#属性 get和set如何使用

什么是属性?

属性在C#中是一种特殊的成员,它提供了对类内部私有字段的安全访问方式。通过属性,您可以对外部代码隐藏类的内部实现细节,同时仍然允许外界以一种受控的方式访问和修改类的状态。属性看起来像是公共字段,但实际上它们是由类提供的方法来读取(get)和/或写入(set)私有字段。

属性的语法

属性由访问修饰符、类型声明、属性名称、以及可选的访问器(accessors)组成。以下是基本语法:

[accessModifier] type propertyName
{get { ... }set { ... }
}
  • accessModifier 是访问修饰符,如 public, private, protected 等。
  • type 是属性的类型。
  • propertyName 是属性的名字。
  • getset 是访问器,分别用于读取和写入属性的值。

创建和使用手动实现的属性

手动实现的属性允许您完全控制 getset 方法的行为。例如:

public class Person
{private string _name;public string Name{get{return _name;}set{if (string.IsNullOrEmpty(value)){throw new ArgumentException("Name cannot be null or empty.");}_name = value;}}
}

在这个例子中,Name 属性的 set 方法会检查传入的值是否为空或空字符串。如果是,则抛出一个 ArgumentException 异常。这确保了 _name 字段不会被设置成无效的值。

自动实现的属性

自动实现的属性是C# 3.0引入的新特性,它简化了属性的定义。当你声明一个自动实现的属性时,编译器会自动生成一个私有的支持字段以及默认的 getset 方法:

public class Person
{public string Name { get; set; }
}

这里,Name 属性没有任何额外的逻辑,只是简单地提供了一个读/写接口。编译器会在幕后创建一个私有字段来存储 Name 的值。

属性的访问修饰符

属性可以有不同的访问级别。例如,可以将一个属性设为只读:

public class Person
{public string Name { get; private set; }
}

上面的代码定义了一个只能通过 set 方法内部访问的 Name 属性。这意味着只有类的构造函数或其他类的方法可以设置名字,而外部代码只能读取它。

如何使用属性

一旦定义了属性,就可以像使用公共字段一样在类的外部访问它:

class Program
{static void Main(){Person person = new Person();person.Name = "李四";Console.WriteLine(person.Name);}
}

当您在使用属性时,可以添加更多的逻辑到 getset 访问器中,比如执行计算、数据验证、调用其他方法等。这样可以让您的类更加健壮,同时保持良好的封装性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/795242.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pyqt5 实现多标签页面

实现功能代码实现 import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QVBoxLayout, QPushButton, QWidget, QLabel, \QDesktopWidgetclass MainWindow(QMainWindow):def __init__(self):super().__init__()self.ini_ui()def ini_ui(self):self.se…

gitee【下载文件】

1.配置公钥(如果是新设备) ssh-keygen -t ed25519 -C "Gitee SSH Key"输入这行命令,按3次回车,演示如下: 生成的公钥就在红框文件夹下复制该字符串,进入gitee的设置中,找到公钥粘贴该字符串配置完后可用该命令测试 ssh -T [git@gitee.com](mailto:git@gitee.c…

gitee【上传文件】

1.配置公钥 ssh-keygen -t ed25519 -C "Gitee SSH Key"输入这行命令,按3次回车,演示如下: 生成的公钥就在红框文件夹下复制该字符串,进入gitee的设置中,找到公钥粘贴该字符串配置完后可用该命令测试 ssh -T [git@gitee.com](mailto:git@gitee.com)2.新建仓库并配…

【技术积累】腾讯/阿里云对象存储上传+删除

腾讯/阿里云对象存储上传+删除创建储存桶 (后面会用到 储存库名称、访问域名、以及region) region(地域和访问域名)的查询参考: https://cloud.tencent.com/document/product/436/6224 https://www.aliyun.com/product/oss常用的阿里云、腾讯云2.创建Api密钥 (后面会用到…

虚拟机安装 gho系统

1.新建 虚拟机2.使用 _优先安装WePE_64_V2.3.exe 制作一个可启动iso3.gho文件 用UltraISO 制作为一个iso文件4.虚拟机用 前面制作的iso文件启动后 分区 ,然后启动 gho工具,再加载iso文件5.此时可以进行克隆还原了

Qt使用绿色pdf阅读器打开文件

1.下载SumatraPDF 2.设置 3.代码void MainWindow::on_pushButton_clicked() {QProcess *process = new QProcess();QString filePath = "C:\\Users\\jude\\Desktop\\su\\11.pdf";QString sumatraPath = "C:\\Users\\jude\\Desktop\\su\\SumatraPDF-3.5.2-64.exe…

基于tf-idf的论文查重

基于tf-idf的论文查重 github地址:https://github.com/gomevie/gomevie/tree/main这个作业属于哪个课程 广工计院计科34班软工这个作业要求在哪里 作业要求 这个作业的目标 设计并实现一个论文查重算法,通过比较原文和抄袭版论文文件,计算并输出重复率。PSP表格PSP2.1 Pers…

Java SE 语法学习

JavaSE 语法 java数据类型基本数据类型整数类型byte 占1个字节,范围:-128-127 short占2个字节,范围:-32768-32767 int占4个字节,范围:-2147483648-2147483647 long占8个字节,范围:-9223372036854775808-9223372036854775807浮点数类型double占8个字节 float占4个字节字…

今天学习和总结

学习了简单的算法知识排序中的快速排序,利用分治的思想来实现快速排序,对于前后大小有问题的进行swap的交换位置,这是基本的模版和源码 include using namespace std; define N 1000100 int A[N]; void quick_sort(int a,int b){ if(a>=b)return ; int i=a-1,j=b+1,x=A[a+b&…

代码整洁之道--读书笔记(7)

代码整洁之道简介: 本书是编程大师“Bob 大叔”40余年编程生涯的心得体会的总结,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更…

痞子衡嵌入式:在MDK开发环境下自定义安装与切换不同编译器版本的方法

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是在MDK开发环境下自定义安装与切换不同编译器版本的方法。Keil MDK 想必是嵌入式开发者最熟悉的工具之一了,自 2005 年 Arm 公司收购 Keil 公司之后,MDK 就走上了发展快车道,从 v2.50a 一路狂奔到现在最新的…