C#入门 017 字段,属性,索引器,常量
字段,属性,索引器,常量都表示数据
字段
什么是字段
- 字段(field)是一种表示与对象或类型(类与结构体)关联的变量
- 字段是类型的成员,又称“成员变量,写在类体里面
- 与对象关联的字段亦称“实例字段,表示某个对象的状态
- 与类型关联的字段称为“静态字段”,由static修饰,表示某个类(类型)的状态
字段的声明
- 参见C#语言定义文档
- 尽管字段声明带有分号,但它不是语句 ,语句在方法体里面
- 字段的名字一定是名词
字段的初始值
- 无显式初始化时,字段获得其类型的默认值,所以字段“永远都不会未被初始化
- 实例字段初始化的时机--对象创建时
- 静态字段初始化的时机--类型被加载(load)时
只读字段
- 实例只读字段
- 静态只读字段
- readonly修饰符, const必须在声明的同时初始化,readonly可以在构造函数中初始化。
属性
什么是属性
- 属性(property)是一种用于访问对象或类型的特征的成员,特征反映了状态
- 属性是字段的自然扩展
- 从命名上看,field更偏向于实例对象在内存中的布局,property更偏向于反映现实世界对象的特征
- 对外暴露数据,数据可以是存储在字段里的,也可以是动态计算出来的
- 对内:保护字段不被非法值“污染
- 属性由Get/Set方法对进化而来
- 又一个“语法糖”--属性背后的秘密
属性的声明
- 完整声明--后台(back)成员变量与访问器(注意使用code snippet和refactor工具 )
- propfull 完整声明

- 简略声明--只有访问器(查看儿IL代码 ) 提供了更多的灵活性,允许在访问属性时执行复杂的逻辑。
- prop 简略声明 多用于传递数据 适用于不需要额外逻辑的情况

- 动态计算值的属性
- 动态计算CanWork值的属性

- 注意实例属性和静态属性
- 属性的名字一定是名词只读属性--只有getter没有setter
- 尽管语法上正确,几乎没有人使用“只写属性”,因为属性的主要目的是通过向外暴露数据而表示对象/类型的状态
属性与字段的关系
- 一般情况下,它们都用于表示实体(对象或类型)的状态
- 属性大多数情况下是字段的包装器(wrapper )
- 建议:永远使用属性(而不是字段)来暴露数据,即字段永远都是private或protected的
索引器( 概述 )
什么是索引器
索引器 (indexer) 是这样一种成员:它使对象能够用与数组相同的方式(即使用下标)进行索引索引器的声明
参见C#语言定义文档
注意:没有静态索引器
什么是常量
- 常量(constant) 是表示常量值(即,可以在编译时计算的值)的类成员
- 常量隶属于(类)类型而不是对象,即没有“实例常量” 类型.常量
- “实例常量”的角色由只读实例字段来担当
- 注意区分成员常量与局部常量
常量的声明
各种”只读”的应用场景
- 为了提高程序可读性和执行效率--常量
- 为了防止对象的值被改变---只读字段
- 向外暴露不允许修改的数据--只读属性(静态或非静态),功能与常量有一些重叠
- 当希望成为常量的值其类型不能被常量声明接受时(类/白定义结构体)--静态只读字段
相关文章:
C#入门 017 字段,属性,索引器,常量
字段,属性,索引器,常量都表示数据 字段 什么是字段 字段(field)是一种表示与对象或类型(类与结构体)关联的变量字段是类型的成员,又称“成员变量,写在类体里面与对象关联的字段亦称“实例字段,表示某个对…...
磐石云语音助手拦截介绍
呼叫中心用户实际应用场景下最高会有超过30%的和语音助手;无声主要是进入了语音信箱;如:“听到滴声后留言”,”漏话提醒““发送请按1,重录请按2”以及拨打过程中客户主动拒接产生的”您拨打的用户正忙“,”关机“”停…...
JSP执行过程及其与Servlet执行效率的比较
JSP(Java Server Pages)和Servlet都是Java Web开发中常用的技术,它们都用于动态生成Web页面。然而,JSP和Servlet在执行过程和效率上存在一些差异。本文将详细探讨JSP的执行过程,并比较JSP与Servlet的执行效率。 一、J…...
open3d
open3d open3d用于 3D 数据处理的现代库。 简介 Open3D 是一个开源库,支持快速开发处理 3D 数据的软件。Open3D 前端公开了一组精心挑选的 C 和 Python 数据结构和算法。后端经过高度优化,并设置为并行化。Open3D 是从零开始开发的,具有一更…...
Vue中优雅的使用Echarts的三种方式
一、原始方法直接使用 1、安装ECharts: npm install echarts --save 2、创建一个Vue公共组件 EChart.vue: <template><div :style"{width: 100%, height: 300px}" ref"chart"></div> </template><scri…...
SpringBoot配置文件/日志
目录 一,SpringBoot配置文件 1,配置文件的格式: 2,properties 3,yml 1,properties与yml的转换 2,读取配置选哪个中的内容 3,单双引号的差异: 4,配置对象: 5,配置集合/配置map 6,yml的优缺点: 二,验证码: 学习目的: 实现样例: 接口定义: 代码总结: 三,日志: 1,概…...
微服务架构面试内容整理-SpringCloud Netflix与Spring Cloud Alibaba比较
Spring Cloud Netflix 和 Spring Cloud Alibaba 都是用于构建微服务架构的解决方案,但它们在设计理念、组件和使用场景上存在一些差异。以下是它们的比较: 1. 服务注册与发现 ● Spring Cloud Netflix:使用 Eureka 作为服务注册和发现的组件。Eureka 是基于 REST 的,适合服…...
JDBC魔法:连接MySQL数据库与数据操作的秘籍
文章目录 一. JDBC介绍二. 数据库驱动1.DriverManager2.Connection3.PreparedStatement4.ResultSet 三. JDBC连接MySQL1. 加载驱动2. 获得连接3. 关闭连接 四. JDBC实现数据新增五. JDBC实现数据删除 一. JDBC介绍 JDBC(Java Database Connectivity)是Ja…...
深入了解Scratch:引导初学者开启编程之旅
引言 在当今数字化时代,编程已不再是成年人的专利,而是一项逐渐向低年龄段普及的技能。Scratch作为一款面向儿童和青少年的图形化编程语言,以其简单易用且充满趣味性的特点,成为了许多初学者学习编程的首选工具。本文将深入探讨S…...
js复制内容到剪切板
复制内容到剪切板 最近预报一个需求需要点击按钮复制当前到行的内容到剪切板, 所以写了这个工具 export function copyText(text: string, prompt: string | null 已成功复制到剪切板!) {if (navigator.clipboard) {return navigator.clipboard.writeText(text).th…...
代码 RNN原理及手写复现
29、PyTorch RNN的原理及其手写复现_哔哩哔哩_bilibili 笔记连接: https://pan.baidu.com/s/1_Sm7ptEiJtTTq3vQWgOTNg?pwd2rei 提取码: 2rei import torch import torch.nn as nn bs,T2,3 # 批大小,输入序列长度 input_size,hidden_size 2,3 # 输入特征大小&a…...
企业官网的在线客服,如何提高效果?
企业官网的在线客服,如何提高效果? 作者:开源呼叫中心系统 FreeIPCC,github地址:https://github.com/lihaiya/freeipcc 提高企业官网在线客服的效果,是提升客户体验、增强客户满意度和忠诚度的关键。一个…...
「实战应用」如何可视化 DHTMLX Scheduler 中的资源工作量?
DHTMLX Scheduler是一个全面的 UI 组件,用于处理面向业务的 Web 应用程序中复杂的调度和任务管理需求。但是,某些场景可能需要自定义解决方案。例如,如果项目的资源(即劳动力)有限,则需要确保以更高的精度分…...
论文阅读《BEVFormer》
BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers 目录 摘要1 介绍2 相关工作2.1 基于Transformer的2D感知 摘要 3D视觉感知任务对于自动驾驶系统至关重要,包括基于多相机图像的3D检测和地图分割。…...
sql专题 之 sql的执行顺序
文章目录 sql的执行顺序sql语句的格式实际的执行顺序:虚拟表 vs 数据集虚拟表 结果集总结嵌套查询在sql查询中的执行顺序 前文我们了解了sql常用的语句,这次我们对于这些语句来个小思索 戳这里→ sql专题 之 常用命令 sql的执行顺序 SQL语句的执行顺序是…...
Vue3 -- 基于Vue3+TS+Vite项目【项目搭建及初始化】
兼容性注意: Vite 需要 Node.js 版本 18+ 或 20+。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。【摘抄自vite官网】 这里我用的node版本是 v18.20.2 创建项目: 创建项目我们可以使用npm、yarn、pnpm、bun …...
CTF-RE: TEA系列解密脚本
// // Created by A5rZ on 2024/10/26. //#ifndef WORK_TEA_H #define WORK_TEA_H#endif //WORK_TEA_H#include <cstdint> #include <cstdio>// 定义TEA加密算法的轮次,一般建议为32轮 #define TEA_ROUNDS 32 #define DELTA 0x9e3779b9// TEA加密函数 v…...
信号量和线程池
1.信号量 POSIX信号量,用与同步操作,达到无冲突的访问共享资源目的,POSIX信号量可以用于线程间同步 初始化信号量 #include <semaphore.h> int sem_init(sem_t *sem, int pshared, unsigned int value); sem:指向sem_t类…...
【人工智能】10分钟解读-深入浅出大语言模型(LLM)——从ChatGPT到未来AI的演进
文章目录 一、前言二、GPT模型的发展历程2.1 自然语言处理的局限2.2 机器学习的崛起2.3 深度学习的兴起2.3.1 神经网络的训练2.3.2 神经网络面临的挑战 2.4 Transformer的革命性突破2.4.1 Transformer的核心组成2.4.2 Transformer的优势 2.5 GPT模型的诞生与发展2.5.1 GPT的核心…...
「QT」几何数据类 之 QPointF 浮点型点类
✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…...
2026固态电池冬季续航实测:零下20℃仍跑600公里?
2026年固态电池量产车型对冬季续航提升的实际数据与技术解析 针对2026年固态电池量产车型在冬季续航方面的表现,目前尚无公开的、基于大规模量产车型的完整冬季实测数据。然而,结合固态电池的技术原理、已发布的实验室及小规模测试数据,以及…...
极验三代w参数生成原理与逆向解析
1. 这不是“破解”,而是对前端验证机制的深度解构 你打开一个电商下单页,点击提交,页面卡住半秒,弹出一个滑块——背景是扭曲的汉字、旋转的数字、重叠的图标。你拖动滑块,系统“滴”一声放行。整个过程不到三秒&#…...
UABEA:跨平台Unity游戏资源编辑神器,解锁游戏模组制作新境界
UABEA:跨平台Unity游戏资源编辑神器,解锁游戏模组制作新境界 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA 你是否曾想修改游戏中的角色皮肤、替换背景音乐,或是深…...
Blender3mfFormat插件终极指南:如何完美处理3MF文件实现高效3D打印
Blender3mfFormat插件终极指南:如何完美处理3MF文件实现高效3D打印 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat Blender3mfFormat是一款专为Blender设计的…...
SCP-Firmware缓冲区溢出漏洞(CVE-2024-9413)分析与防护
1. 漏洞概述与影响范围解析CVE-2024-9413是近期在SCP-Firmware中发现的一个高危安全漏洞,其核心问题在于应用程序处理器(AP)可能通过特定操作触发系统控制处理器(SCP)固件中的缓冲区溢出。这种漏洞类型在嵌入式系统安全…...
LSTM比特币价格预测:特征工程驱动的交易信号生成器
1. 项目概述:为什么用RNN/LSTM做比特币价格预测,而不是随便套个模型?我从2018年开始接触加密资产量化分析,最早用的是ARIMA和随机森林——前者对趋势拐点完全失灵,后者在训练集上准确率92%,一到实盘就跌破6…...
AGENTS半自主智能体架构:状态驱动的可追溯可恢复Agent系统
1. 项目概述:这不是又一个“Agent框架”,而是一次LLM应用范式的重新校准“Inside AGENTS”这个标题里藏着三个关键信号:Inside——它不是教你怎么用,而是带你钻进引擎舱看活塞怎么运动;AGENTS——大写的复数࿰…...
PyCharm无法引用本地扩展包问题的结解决方法
一、问题:PyCharm无法引用pygame等本地扩展包。二、原因分析PyCharm使用了自带的Python解释器,而扩展包在自己的Python里。三、解决方法:1、换成自己的解释器,也就是把pygame所在的Python解释器引进来。2、具体步骤:汉…...
5个理由让你立即尝试ImStudio:实时GUI布局设计器
5个理由让你立即尝试ImStudio:实时GUI布局设计器 【免费下载链接】ImStudio GUI layout designer for Dear ImGui 项目地址: https://gitcode.com/gh_mirrors/im/ImStudio ImStudio是一个基于Dear ImGui的实时GUI布局设计器,专为游戏开发者和应用…...
《Sysinternals实战指南》ZoomIt 学习笔记(11.11):休息计时器与演讲节奏控制——倒计时、番茄钟与现场掌控力
🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...
