news 2026/4/18 11:26:12

Vision Studio C#中属性set和get访问器、构造函数、析构函数的应用和介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vision Studio C#中属性set和get访问器、构造函数、析构函数的应用和介绍

属性set和get访问器

属性的命名:public int Age { get; set; }, 特点: 它一般不存储数据,可以公开接口 也可以在外部进行访问
字段:private私有的 int age 字段可以存储数据,一般定义成私有的 目的是保证数据的安全性

set和get访问器的区别

如果对类里面的字段进行限制、拦截处理,可以在属性的set和get访问器里面进行条件设置
set和get访问器 其实就是方法
set服务器:给字段设置值的方法,带一个参数,一般起成value , 把value赋值给字段
get访问器: 获取字段值的 他是带返回值的 return 字段;

例子

创建一个class类

class People{}

1 原始的set和get写法: 先写私有的字段,再写公共的属性 添加set和get

private string name;///这个是私有的字段,使用定义 public string Name//公共的属性,目的是在外部进行循环 { get { //通过Name获取值 本质获取name的值 Console.WriteLine("111111111111111111"); return name+"aaaaaa"; } set { //设置值通过Name 给name进行赋值,value设置的值 Console.WriteLine("222222222222222222"+value); value = "嘉伟"; name = value; } }

2 如果不想对属性进行任何的操作 可以优化写法

private int id; public int Id { get { return id; }set { id = value; } }

3 C#提供字段和属性的语法糖的写法,可以简写一句

public bool Sex { get; set; } private int age; public int Age { get { return age; } set { if (value < 0 || value > 200) { //throw 抛出,Exception异常 //异常的描述信息 throw new Exception("年龄不可能小于0也不可能大于200"); } age = value; } }

4 最后在Main函数里调用

People p1 = new People(); p1.Name = "嘉伟";//在属性赋值的时候 set访问器执行了 p1.Age = 20; Console.WriteLine(p1.Name+p1.Age+"----------");//在获取值的时候get服务器执行了 //如果想对属性进行设置限制了,可以set和get访问器当中进行设置 People p2 = new People(); p2.Name = "冰冰"; p2.Age = 20; Console.WriteLine(p2.Name+p2.Age+"+++++++"); Console.ReadKey();

异常显示

Exception 是所有异常的基类
new DivideByZeroException("除数不能为0的异常")
int b = 20;
int a = b / 0;
Console,WriteLine(a);

System.StackOverflowException” 内存泄漏 死循环 方法自己调用自己

int[] ss = new int[] { 1, 2 };
Console.WriteLine(ss[3]);
new IndexOutOfRangeException()//数组索引值超出范围异常

new ArgumentOutOfRangeException(); 参数超出范围的异常

构造函数

构造函数的含义:
构造函数目的: 创建对象,在构造函数里面给对象成员赋初始值
默认有一个无参数的构造函数,类名和方法名一样,不能写有无返回值
也可以定义带参数的构造函数

1 创建一个类

public class Girls { public string Name { get; set; } public string Hair { get; set; } //下面这个就是无参数的构造函数 public Girls() { Name = "Baby"; Hair = "长头发"; } }

2 在Main函数里使用类

Girls g1 = new Girls(); Console.WriteLine(g1.Name + "------");

例子

封装一个类:Aircraft,拥有属性:牌子、型号、颜色、隶属公司、飞行速度、装载人数、飞机类型(大中小(400-200-100)由装载人数自动设置)、当前飞机装载的人数(随机生成)

1 定义一个类

public class Aircraft { public string Type { get; set; } public string Name { get; set; } public string Color { get; set; } public string Company { get; set; }//公司 public int Speed { get; set; }//速度 public int Allcount { get; set; }//装载人数 public string PlaneType { get; set; }//飞机的类型 大 中 小 public int Count { get; set; }//当前人数 private Random r= new Random();//随机数对象 随机人数 //定义一个带参数的构造函数 public Aircraft(string n,string t,string c,string com ,int s,int all) { Name =n; Type = t; Color =c; Company = com; Speed = s; Allcount = all;//传递 100 200 400 Count = r.Next(0,Allcount);//当前人数 if (Allcount == 100) { PlaneType = "小飞机"; } else if (Allcount == 200) { PlaneType = "中飞机"; } else { PlaneType = "大飞机"; } } }

2 在Main函数使用

Aircraft a1 = new Aircraft("空军一号","客机","粉色","波音公司",100,100); Console.WriteLine(a1.Name+a1.Type+a1.Color+a1.Company+a1.Speed+a1.Allcount+a1.PlaneType+a1.Count);

析构函数

析构函数: 当对象不使用的时候,会把对象设置为null,再通过GC(垃圾回收机制)进行回收的时候 触发析构函数
析构函数的特点: 方法名还是类名 只不过在方法名前加一个~

class People { public string Name { get; set; } //析构函数:方法名还是类名 只不过再方法名前加一个~ ~People() { Console.WriteLine(this.Name+"被释放了"); } }
People p1=new People() {Name="zs" }; p1 = null;//把p1置为null People p2 = new People() { Name = "ls" }; People p3 = p2; p2 = null; p3 = null; Console.WriteLine("请按任意键进行回收"); Console.ReadKey(true );//用户按键之后再往下执行 GC.Collect();//回收置为null内存空间
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 4:24:48

Dify 1.7.0音频功能瓶颈突破(音频时长限制终极应对策略)

第一章&#xff1a;Dify 1.7.0音频功能瓶颈突破&#xff08;音频时长限制终极应对策略&#xff09;Dify 1.7.0 版本在语音处理能力上实现了显著增强&#xff0c;但仍存在单次音频上传时长上限为60秒的硬性限制。这一约束对需要处理长语音的应用场景构成挑战。通过合理的技术拆分…

作者头像 李华
网站建设 2026/4/17 18:53:26

如何通过vivado对一个FPGA工程进行性能评估

目录 1.最高运行频率(Fmax​) 2.资源利用率 3.功耗(Power) 4.传输延迟(Latency) 5.吞吐率(Throughput) 在开展FPGA设计的性能评估工作时&#xff0c;需围绕多个核心维度展开量化分析&#xff0c;常用的关键评估指标主要包含以下五类&#xff1a; 最高运行频率(Fmax​)&…

作者头像 李华
网站建设 2026/4/18 4:25:14

自定义类或结构体-–-behaviac

原文 在.h文件中&#xff0c;任意编写一个自定义的类或结构体&#xff0c;并用宏DECLARE_BEHAVIAC_STRUCT声明该类或者结构体为非虚类&#xff0c;如下代码所示&#xff1a; struct TypeTest2_t {int name;float weight;bool bLive;DECLARE_BEHAVIAC_STRUCT(TypeTest2_t);…

作者头像 李华
网站建设 2026/4/18 7:57:22

清朝条约全集 PDF 电子版(三册合集):从尼布楚到辛丑条约的完整史料集

若想系统梳理清代对外关系的史料脉络&#xff0c;这份《清代外交文献三册合辑》可作为重要参考 —— 它完整收录了自 1689 年《尼布楚条约》至 1901 年《辛丑条约》期间的核心外交文书&#xff0c;覆盖清代近 220 年的对外交往历程。 这套合辑以时间为线索分册编排&#xff1a…

作者头像 李华
网站建设 2026/4/18 7:29:09

6、数据保护:备份、恢复与业务连续性

数据保护:备份、恢复与业务连续性 在当今数字化时代,数据保护对于各类组织而言至关重要。它不仅关乎数据的安全性,还涉及业务的连续性和灾难恢复能力。本文将深入探讨数据保护的各个方面,包括面临的挑战、可用的机会以及具体的保护策略和技术。 1. 数据保护基础 在 IT 领…

作者头像 李华
网站建设 2026/4/18 7:56:51

检索重排序的 Dify 结果过滤:5步实现精准结果过滤与排序优化

第一章&#xff1a;检索重排序的 Dify 结果过滤在构建基于大语言模型的应用时&#xff0c;检索增强生成&#xff08;RAG&#xff09;系统常面临检索结果相关性不足的问题。Dify 作为低代码 AI 应用开发平台&#xff0c;提供了灵活的结果过滤与重排序机制&#xff0c;帮助开发者…

作者头像 李华