C#中的字段和属性

字段和属性

字段和属性的基础介绍

类拥有成员变量和成员方法

成员变量就是字段,用于存储对象的信息

public string name; //公共字段private int age; //私有字段

可以给成员变量设置其内部的get/set方法,操作获取或设置成员时的操作。

internal class Program
{static void Main(string[] args){Console.WriteLine("Hello, World!");People people = new People();people.Age = 100;Console.WriteLine(people.Age);people.Age = 55;}
}class People
{//类拥有成员变量和成员方法//成员变量就是字段,用于存储对象的信息public string name; //公共字段private int age; //私有字段//可以给成员变量设置其内部的get/set方法,操作获取或设置成员时的操作。public int Age{//获取Age属性的时候执行的get{Console.WriteLine("get方法执行了");return age;}//设置Age属性的时候执行set{Console.WriteLine("set方法执行了");Console.WriteLine(value);if(value < 0){//抛出一个错误,让那个代码块报错并停止throw new Exception("Age 属性的值不能小于0");}if(value > 120) {throw new Exception("Age 属性的值不能大于120");}age = value;Console.WriteLine(age);}}

命名方式

// 在类中
public string Name; //公共的,属性“大驼峰命名”private int age; //私有的,字段“小驼峰命名”
public int Age //公共的,属性“大驼峰命名”
{get{return age;}set{if(value < 0 || value > 20){throw new ArgumentException("Age 不在有限的范围之内0-20");}age = value;}
}//自动生成属性
public string Name { get; set; }//完整的创建属性的方式
private int myVar;//创建一个私有的字段public int MyProperty//创建公开的属性
{get { return myVar; }//通过get方法吧myVar的值返回给MyProperty属性set { myVar = value; }
}//私有的
string color1;
string[] colors = new string[] { "白", "黑", "黄", "花" };
public string Color1
{get{return color1;}set{if (!colors.Contains(value)){throw new Exception("此参数不在Color的选择范围之内");}color1 = value;}
}

相关操作

有时候我们只需要定义一个公开的属性,不需要操作拦截的。

//string name;
//public string Name { get => name; set => name = value; }//以上写法比较复杂,c#提供了一种语法糖,简化上面代码
public string Name { get; set; }
public int Age { get; set; }//给字段添加一个初始值
string s = "s的默认值";//给属性添加一个初始值
string b = "b的默认值";
public string B { get => b; set=> b = value; }//属性也可以使用语法糖设置默认值
public string C { get; set; } = "C的默认值";

当一个属性的访问只有get,没有set的时候,说明这个属性是只读的

public bool isAge {get{return  Age >= 18;}
}

因为属性是依赖访问器进行工作的,因此属性不仅仅可以访问成员变量,也可以根据现有的数据随时生成一个新的数据

public string info
{get{return $"名字:{Name},年龄:{Age},是否大于18:{isAge}";}
}

书写一个枚举类型的数据。作为比对数据

public enum Ecolor
{白,黑,黄,花}//添加成员属性Color
public Ecolor Color;

总结:字段和属性的区别

1.字段和属性都是成员变量

2.字段一般是私有的,属性一般是公共的。

3.字段命名“小驼峰”,属性命名“大驼峰”。

4.字段用来存储数据,属性不能存储数据。

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

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

相关文章

JavaScript高级——函数中的this

1、this是什么&#xff1f; ① 任何函数本质上都是通过某个对象来调用的&#xff0c;如果没有直接指定就是 window 。 ② 所有函数内部都有一个变量 this 。 ③ 它的值是调用函数的当前对象。 2、如何确定 this 的值&#xff1f; ① test&#xff08;&#xff09;&#xff…

如何进行DAP-seq的数据挖掘,筛选验证位点

从样本准备到寄送公司&#xff0c;每一天都在“祈祷”有个心仪的分析结果&#xff0c;终于在这天随着邮件提示音的响起&#xff0c;收到了分析结果...... 分析前工作 爱基在进行数据分析之前&#xff0c;会有两次质控报告反馈给老师们。第一个&#xff0c;基因组DNA的提取质控…

springBoot 集成https

springBoot 集成https 1、springBoot默认的证书格式 pring Boot 需要 .p12 或 .jks 格式的证书。如果你只有 .pem 和 .key 文件&#xff0c;可以使用 openssl 工具将它们转换成 .p12 文件 2、转换.p12 我的证书文件如下&#xff0c;需要转换 2.1 下载openssl https://slpr…

苹果手机铃声怎么设置自己的歌?3个方法自定义手机铃声

苹果手机内部的手机铃声库只有固定的几首铃声&#xff0c;且都是纯音乐&#xff0c;比较单调&#xff0c;并不是所有用户都喜欢这些铃声。那么&#xff0c;苹果手机铃声怎么设置自己的歌呢&#xff1f;小编这里有3个方法&#xff0c;可以教大家如何将手机铃声设置成自己喜欢的歌…

MongoDB 的适用场景

MongoDB 的适用场景 MongoDB 是一种基于文档存储的 NoSQL 数据库&#xff0c;与传统的关系型数据库不同&#xff0c;它使用 JSON 类似的二进制文档格式&#xff08;BSON&#xff09;来存储数据&#xff0c;并且具备灵活的文档模型、强大的查询能力和水平扩展性。这些特性使得 …

Java 入门指南:Java 并发编程 —— 同步工具类 Semephore(信号量)

文章目录 同步工具类Semephore核心功能限制并发访问量公平与非公平策略灵活性与适应性 常用方法使用示例 同步工具类 JUC&#xff08;Java.util.concurrent&#xff09;是 Java 提供的用于并发编程的工具类库&#xff0c;其中包含了一些通信工具类&#xff0c;用于在多个线程之…

C语言-综合案例:通讯录

传送门&#xff1a;C语言-第九章-加餐&#xff1a;文件位置指示器与二进制读写 目录 第一节&#xff1a;思路整理 第二节&#xff1a;代码编写 2-1.通讯录初始化 2-2.功能选择 2-3.增加 和 扩容 2-4.查看 2-5.查找 2-6.删除 2-7.修改 2-8.退出 第三节&#xff1a;测试 下期…

【单片机开发】单片机常用开发工具

【前言】 在嵌入式系统领域&#xff0c;单片机&#xff08;Microcontroller, MCU&#xff09;作为核心组件&#xff0c;广泛应用于智能家居、工业控制、汽车电子等众多领域。而单片机开发工具&#xff0c;则是开发者们实现创意、解决问题的重要助手。本文主要讲述目前主流的单…

港科夜闻 | 叶玉如校长出席2024科技+新质生产力高峰论坛发表专题演讲,贡献国家科技强国战略...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、叶玉如校长出席“2024科技新质生产力高峰论坛”&#xff0c;做了题为“三个创新&#xff1a;培育和发展新质生产力、贡献国家科技强国战略”的主题演讲。该论坛于9月2日在香港召开。论坛围绕夯实基础科研、推动源头创新、…

axure判断

在auxre中我们也可以实现判断的功能&#xff0c;当目标等于什么内容时则执行下方的功能。 一、判断输入框中是否有值 画布添加一个输入框、一个文本标签删除其中内容&#xff0c;添加一个按钮&#xff0c;输入框命名为【文本显示】文本标签命名为【提示】 给按钮新增一个交互…

单向链表概述

文章目录 &#x1f34a;自我介绍&#x1f34a;单向链表概述数据域和指针域数据类型设计 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以&#xff1a;点赞关注评论收藏&#xff08;一键四连&#xff09;哦~ &#x1f34a;自我介绍 Hello,大家好&#xff0c;我是小珑也要…

(计算机网络)应用层

1.为什么需要应用层 应用层提供使用tcp&#xff0c;udp使用的方式 协议就是制定的规则 2.域名服务器概述 域名是唯一的 新增域名&#xff0c;大家都要修改这个文本文件&#xff0c;所以要进行集中管理这个文本文件&#xff0c;而不是使用本地的hosts文件 hosts文件在Windows系统…

python 图片识别文字

要在 Python 中实现图片中的文字识别&#xff0c;通常使用的是 Tesseract OCR&#xff0c;结合 Pillow 处理图像。以下是一个简易的实现步骤&#xff1a; 1. 安装所需库&#xff1a; 你需要安装以下库&#xff1a; Tesseract OCR 引擎&#xff1a;这是进行文字识别的核心工具…

循环语句(C语言)

一般情况下&#xff0c;语句是按顺序执行的&#xff1a;函数中的第一条语句先执行&#xff0c;接着是第二条语句&#xff0c;依此类推。循环语句允许我们多次执行一个语句或语句组。 “ while ”循环 功能描述&#xff1a;当给定条件为真时&#xff0c;重复语句或语句组。它会…

内核线程同步之信号量、互斥量、自旋锁、原子量

本次主要是学习线程同步时保护数据的锁机制,对于多个线程同时对一个变量进行赋值操作时,会造成该变量的赋值不确定,出现了竞争状态,这时需要有个锁来保护下,即加个锁,同一时间只能有一个线程对其操作,当锁释放了,另一线程才能对其操作,而处在加锁和解锁之间的区域叫做…

Java | Leetcode Java题解之第397题整数替换

题目&#xff1a; 题解&#xff1a; class Solution {public int integerReplacement(int n) {int ans 0;while (n ! 1) {if (n % 2 0) {ans;n / 2;} else if (n % 4 1) {ans 2;n / 2;} else {if (n 3) {ans 2;n 1;} else {ans 2;n n / 2 1;}}}return ans;} }

部署定时任务每2天清理一次表

1、创建存储过程 create or replace procedure truct authid current_user ---使用“authid Current_user”将存储过程转化为调用者权限 as begin execute immediate truncate table rep.tmp_s_st_busi_send_arc; end; / 2、创建定时任务 begin dbms_scheduler.create…

机器学习中的聚类艺术:探索数据的隐秘之美

一 什么是聚类 聚类是一种经典的无监督学习方法&#xff0c;无监督学习的目标是通过对无标记训练样本的学习&#xff0c;发掘和揭示数据集本身潜在的结构与规律&#xff0c;即不依赖于训练数据集的类标记信息。聚类则是试图将数据集的样本划分为若干个互不相交的类簇&#xff…

SEELE 框架是

SEELE 框架是一个相对新颖的组织管理和优化框架&#xff0c;旨在帮助团队或企业更好地实现目标。它的核心思想是通过科学的管理方法来提升组织的执行力和决策能力。以下是对 SEELE 框架的详细讲解&#xff0c;包括定义、内容、实施步骤、实施策略以及推荐的实践方法和工具。 一…

【人工智能学习笔记】4_3 深度学习基础之循环神经网络

循环神经网络(Recurrent Neural Network, RNN) 是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network),循环神经网络具有短期记忆能力 RNN核心思想 RNN的结构 一个典型…