简述 C# 成员修饰符(Modifier)——从整体到细节全面解析

Unity编辑器UI组件化:基于UI Toolkit构建可复用按钮系统 在Unity编辑器扩展开发中,构建可维护、可复用的用户界面是提升开发效率的关键。传统IMGUI模式存在代码与样式强耦合、状态管理困难等问题,而UI Toolkit框架引入了保留模式与声明式UI设计,通过分离视觉结构(UXML)、样式表现(USS)与逻辑行为(C#),实现了类似现代Web开发的模块化工作流。其核心价值在于支持创建高内聚、低耦合的组件系统,便于统一维护与主题定制,显著降低长期维护成本。应用场景广泛覆盖插件开发、内部工具制作及工作流优化。本文以构建模块化编辑器按钮组件为例,详细阐述了如何利用C#自 阅读详情

在 C# 语言中,成员修饰符(Modifier) 用于描述类型或成员的可访问性、实现方式、继承能力以及生命周期。
无论是基础语法学习、工程开发,还是面试考察,成员修饰符都是必须掌握的核心知识点。


一、C# 成员修饰符整体分类

1. 行为修饰符(Behavior Modifiers)

修饰符说明
abstract成员无实现,必须由派生类实现
virtual成员可以在派生类中被重写
override对基类虚成员提供新的实现
static成员属于类型本身
const编译期常量
readonly运行期只读字段
extern成员在外部实现
event声明事件成员

2. 访问修饰符(Access Modifiers)

修饰符访问范围
public任意位置
private当前类或结构
protected当前类及派生类
internal同一程序集
protected internal同一程序集或派生类

二、行为修饰符详解

abstract —— 抽象成员

public abstract class Animal
{
    public abstract void Speak();
}

特点说明

  • 没有方法体
  • 抽象类不能实例化
  • 派生类必须实现
  • 不能与 private、static 同用

virtual —— 虚成员

public virtual void Print()
{
    Console.WriteLine("Base");
}
  • 提供默认实现
  • 子类可选择重写
  • 支持运行时多态

override —— 重写成员

public override void Print()
{
    Console.WriteLine("Derived");
}
  • 只能重写 virtual / abstract
  • 方法签名必须一致
  • 访问级别不能降低

static —— 静态成员

public static int Count;
  • 属于类型本身
  • 所有实例共享
  • 不能访问实例成员

const —— 常量

public const int MaxValue = 100;
  • 编译期确定
  • 隐式 static
  • 不可修改

readonly —— 只读字段

public readonly int Age;

public Person(int age)
{
    Age = age;
}
  • 运行期赋值
  • 只能在声明或构造函数中赋值

extern —— 外部实现

public extern void NativeMethod();
  • 实现位于外部
  • 常用于 P/Invoke

event —— 事件

public event EventHandler Clicked;
  • 基于委托
  • 发布-订阅模型

三、访问修饰符详解

public

  • 同一程序集
  • 其他程序集

接口成员、枚举成员默认 public。


private(默认)

  • 仅当前类或结构
  • 方法默认 private
  • 析构函数默认 private

protected

  • 当前类
  • 派生类

internal

  • 同一程序集
  • 类默认访问级别

protected internal

  • 同一程序集 或
  • 派生类

四、访问修饰符对比表

修饰符同类派生类同程序集跨程序集
private✔✖✖✖
protected✔✔✖✖
internal✔✔✔✖
protected internal✔✔✔✔
public✔✔✔✔

五、总结

  • 行为修饰符:决定“怎么实现、能否继承”
  • 访问修饰符:决定“谁能访问”
  • 默认规则是高频考点

会写代码是基础,用好修饰符是设计能力。

C#每日面试题-简述C#访问修饰符 在C#面试中,“访问修饰符”是基础且高频的考点,看似简单的几个关键字(public、private、protected等),却直接关联面向对象的核心思想——封装。很多同学能说出每种修饰符的大致范围,但要讲清“为什么需要这些修饰符”“不同场景该选哪种”“背后的设计逻辑”,就容易卡壳。今天这篇文章,我们从“是什么”“各修饰符详解”“使用原则”“面试技巧”四个维度,把访问修饰符讲透,兼顾易懂性和深度。 阅读详情

相关推荐

MuJoCo 机械臂关节空间阻抗控制Impedance实现(附代码)

阻抗控制通过调整关节的刚度和阻尼,让机器人在接触时产生顺应性,减少冲击力,其核心目标是在接触外部载荷时能够自适应调整输出力矩,实现力与位置的协同控制。阻抗控制可以很快的到达设定位置,在此基础上,使用mujoco交互中的施加外力操作,可以看到当外力松开后,机械臂也可以很快的回弹回设定位置。其中self.Kp和self.Kd为固定刚度和阻尼系数,通过修改刚度和阻尼参数,可以变得更柔顺来应对各种场景。注释掉该行后,直接simulate仿真可以看到机械臂控制位置震荡等情况,接下来引入关节空间阻抗控制的代码。

darcsdn 1266

C# 修饰符

abstract抽象方法属于abstract类,并且该方法没有实现。方法由子类实现:// 创建Student类的一个对象(从Person继承属性和方法)// 调用抽象方法//抽象类// 子类 (从Main类继承){ // 实现抽象方法Console.WriteLine("好好学习,天天向上!!!");

写着玩儿的博客 1914

无线网卡选购指南:哪些型号支持Kali Linux的监听模式?附免驱动网卡推荐

本文详细解析了如何在Kali Linux下选购支持监听模式的无线网卡。核心在于选择兼容的芯片组,如Atheros AR9271和Ralink RT3070等经典型号,并提供了免驱动网卡推荐与实战配置指南,帮助安全研究人员和爱好者快速搭建无线测试环境。

wind6的博客 1553

从零构建C# OOP 知识体系

.NET 软件工程师必备:OOP 四大支柱的工程实践,重构认知:深入理解 C# 封装、继承、多态与抽象

龟速船长 973

百元DIY手机荧光计:低成本荧光检测平台搭建与实战

荧光检测是一种基于物质受特定波长光激发后发射更长波长荧光的分析技术,其核心原理在于光与物质的相互作用。通过选择性激发与检测,该技术能实现对痕量物质的高灵敏度、高特异性定量分析,在生物医学、环境监测和食品安全等领域具有重要价值。传统荧光分光光度计虽精度高,但成本昂贵、体积庞大且操作复杂,限制了其在现场快检和普及教育中的应用。本文聚焦于如何利用智能手机的高性能摄像头和处理器,结合低成本光学滤光片和LED光源,构建一个便携、经济的DIY荧光检测平台。该方案通过简化光路设计,采用带通滤光片进行波长选择,并利用图像处

weixin_34194829的博客 304

机房电脑的“还原”秘密:如何应对重启即清零的困境

机房电脑重启后自动还原是常见的现象,这主要依靠硬件还原卡或软件还原系统(如冰点还原)实现。这类技术会定期将系统盘恢复初始状态,但通常不保护非系统盘。要高效使用公共电脑,建议:1)将个人文件存储在D/E盘;2)使用绿色便携软件;3)必要时可尝试通过热键临时关闭还原功能;4)养成云端备份习惯。掌握这些技巧既能遵守机房规定,又能保证学习资料安全,培养良好的数字资产管理能力。

一位主要以学校学生信息技术,社会工作生活讲解科普拓展的博主 1448

ANTLR v4 实现 Pest PEG 文法解析器:从 readme 到 PestLexer/PestParser 的完整剖析

本文基于 grammars-v4 仓库中 [pest/readme.md](https://link.gitcode.com/i/5838c4e30ba73635e1a5c7c1345118a0) 展开,深入剖析该项目为 **Pest PEG 文法语言** 编写的 ANTLR v4 语法描述:包括 Pest 语法语言的语法设计(`~` 序列运算符、`|` 选择运算符、规则修饰符等)、[PestLe

gitblog_00251的博客 197

UE5Could not be compiled. Try rebuilding from source manually.

UE5Could not be compiled. Try rebuilding from source manually.

weixin_45417260的博客 2770

Unity UniText笔记

error occurred

qilin598866753的博客 226

RuoYi(分离版) 使用代码生成器添加子模块(idea版)

文章目录准备一、使用代码生成器1.数据库2.导入表并生成代码二、导入代码文件1.新建一个模块2.导入zip代码文件3.模块环境配置添加菜单和访问地址总结 准备 前提要把系统启动起来,部分教程可以参考这边文章若依框架RuoYi前后端分离项目导入IDEA及运行启动 但是完全参考这篇文章还是不能把项目启动起来,因为这篇文章没有说明数据库。 我是用的是本地数据库,采用xampp+Navicat的组合来部署和访问数据库。打开Navicat,连接并创建数据库ry-vue并导入数据脚本ry_20191008.sql,q

dream_coke的博客 1万+

竞赛经验——挑战杯、互联网加、北斗杯、微软创新杯、计算机设计等比赛教训与经验

最近参加一些比赛,北斗杯、挑战者杯、微软创新杯等比赛,每次比赛都有不少需要总结的地方,特别是项目展示上技巧很多,总结一下。 首先最重要的是作品自身硬!自身的作品完成度不高,或者是没有创新点,就没必要参加了。 比如是出去比赛的话,我反正每次碰到最多的是智慧农场、智慧家居之类,不知道为啥这种的太多了。如果是创业型比赛,评委基本会问小米已经做得很好了很便宜了,你的优势在哪里?这些都是常见的问题提前要...

沉迷单车的追风少年 7325

Jetpack Compose 约束布局 ConstraintLayout 入门与实战指南

在移动端 UI 开发中,布局设计直接关系到页面性能与代码可维护性。传统 View 体系常用多层嵌套容器实现复杂界面,但层级过深会带来测量与绘制开销。约束布局的出现改变了这一局面,它通过描述组件之间的相对位置关系来扁平化布局结构,既提升了渲染效率,也让代码意图更清晰。随着声明式 UI 框架的普及,Jetpack Compose 也引入了对应的 ConstraintLayout 实现,使用 Kotlin DSL 替代 XML,在保留约束思想的同时更贴合现代开发范式。本文从布局基础概念出发,讲解约束布局的核心原理

weixin_30607659的博客 479

GPU硬件架构与微架构深度解析09-GPU寄存器文件深度解析

本文探讨GPU架构中大规模寄存器堆的设计与高效分配算法。寄存器文件作为GPU关键组件,支持大规模线程并行和快速数据存取。文章分析了多体寄存器堆的设计考量,包括端口数量、冲突避免和功耗管理,并比较了线性扫描、图着色等寄存器分配算法的特点。还介绍了寄存器压缩、动态分区等高级优化技术,以及NVIDIA Ampere架构的实际案例。这些技术对提升GPU计算性能和能效至关重要。

2301_79143213的博客 120

C 快速参考备忘清单:基础语法、字符串、集合、LINQ 与事件委托速查指南

> 本文基于 jaywcjlove/reference 仓库中的 [C# 备忘清单](https://link.gitcode.com/i/ca51fabdc84fc7a22f9b1d0cb25cac0f) 编写,是一份面向开发者的 C# 快速参考速查表。它覆盖从第一个 `Hello, world!` 程序、变量与原始数据类型、字符串处理、运算符与表达式,到面向对象的类与继承、元组、常用集合、LI

gitblog_00800的博客 940

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Alda文本音乐编程入门:八度、时值、变音记号与调号全解析

文本编程与音乐记谱的碰撞催生了轻量级音乐编程语言。Alda 以代码方式描述音乐,通过数字八度、时值后缀、升降号及调号状态继承,将乐谱转化为可播放的 MIDI 数据。其原理类似状态机:音高、时值、调号作为上下文层层叠加,兼顾可读性与表达力。这种文本化记谱方式,让作曲家、教育者和算法作曲系统都能快速生成可试听的旋律,也便于版本管理与批量修改。从即兴动机到完整乐段,Alda 都能在终端中完成编写与回放。本文围绕 Alda 最核心的八度解析、时值系统、临时变音记号和调号设置展开,结合谱例拆解组合语法,帮助读者建立用

weixin_33829657的博客 337

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Flow Launcher:免费 Windows 启动器,一个输入框搞定找文件、开应用、跑命令

Flow Launcher 是一个免费开源的 Windows 启动器:按 `Alt+Space` 弹出一个输入框,搜文件、开程序、跑系统命令都在这里完成。它适合想少点鼠标、多用键盘的办公用户和开发者,免费开源,3 分钟装好。 ## 先搞清楚:它给谁用、替代什么 Flow Launcher 是个启动器,顺便能搜文件、查网页、执行系统命令。它替代的是在开始菜单、资源管理器、浏览器搜索框之间来回切换

gitblog_00946的博客 262

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Unity网格变形插件的简单使用:以curve sculpt layered自由变换修改器为例

一、Mega-Fiers插件介绍 一个完整的网格变形,动画和变形系统,包括超过50个修改器,如弯曲,扭曲,位移,锥度。并且可以将任意数量的修饰符应用于网格以实现复杂的结果。物体可以伸展,挤压,变形或弯曲变形。 Mega-Fiers是用C#编写的,所有的源代码都包含在内。同时还利用多个CPU来获得惊人的性能,并且可以在所有平台及免费版本Unity平台上运行,与Unity3,4,5和2017兼容,使用...

wangjingxhz的博客 4577

Flow Launcher 完整指南:一个免费 Windows 启动器,把搜文件、开应用、管系统压缩进一个搜索框

如果你的电脑装了 200 多个应用,找一个不常用的工具要靠开始菜单翻三页;如果一份半年前的 PDF 存在 D 盘还是 E 盘,你想起来它叫什么,却想不起来它在哪;如果你想锁屏,手边没鼠标,只能等 10 秒开始菜单动画加载完——这些重复的小动作,每天会吃掉你不少碎片时间。Flow Launcher 就是一个免费开源的 Windows 启动器:按 `Alt+Space` 弹出一个搜索框,应用、文件、系

gitblog_00971的博客 606

下完即切:用 downkyi 视频裁剪,只留下 B 站视频里你要的那 3 分钟

当你用 downkyi 下载 B 站视频时,可以直接在下载环节完成片段提取。内置的视频裁剪(Video Trimming)在下载阶段就能切出你需要的片段,省掉先下完整视频、再二次剪辑转码的中间环节,存储和时间都省下来。 ## 视频裁剪适合这些场景 - 网课复习,只需要保留 10 分钟例题讲解 - 二创剪辑,想留下某首歌的高光段落 - 素材库管理,把长视频拆成 10 秒以内的短片段 在这些场景

gitblog_00532的博客 197

为什么转换后的主题颜色不精准?Theme Converter for VS的VSCTokenFallback回退与OverlayMapping透明合成原理

Theme Converter for VS 是一款命令行工具(CLI),能够把 VS Code 配色主题转换成 Visual Studio 2022 可用的主题,并打包成 .pkgdef 文件。不过不少用户会发现:转换后的颜色"差了点意思",和 VS Code 里看着不太一样。这其实是设计使然——本文带你弄懂背后的 **VSCTokenFallback 回退机制**与 **OverlayMapp

gitblog_00568的博客 451

The Concise TypeScript Book 精读:探索类型系统——结构类型、比较规则、类型推断与收窄的完整实战指南

> 本文以开源书籍 The Concise TypeScript Book 的 [exploring-the-type-system.md](https://link.gitcode.com/i/7baff8b16c6353c1b004344187370ea1) 一章为核心,系统讲解 TypeScript 类型系统的核心机制:结构类型判定、递归比较规则、"类型即集合"的数学视角、类型声明/断言/环

gitblog_01180的博客 243

UE5 Linux开发环境配置:深入解析Keywords.ini语法高亮机制与自定义关键词实践

在游戏开发与计算机图形学领域,语法高亮是提升代码可读性与开发效率的基础功能,其核心原理是通过词法分析识别特定关键词并应用视觉样式。UE5引擎通过Keywords.ini配置文件实现了一套可扩展的关键词管理系统,该文件定义了编辑器内文本组件(包括蓝图、材质表达式及代码编辑器)的语法着色规则。从技术价值看,这套机制不仅保障了跨平台开发体验的一致性,更为团队定制专属开发环境提供了底层支持。在Linux环境下,由于路径大小写敏感、文本工具链差异等特性,配置文件的管理与调试需要特别注意。通过理解其包含(Include

weixin_34109408的博客 305

构建高效终端用户界面:Ratatui实战项目完整指南

在终端环境中构建美观实用的用户界面一直是开发者的挑战,而Ratatui作为Rust生态中的终端用户界面(TUI)库,提供了完整的解决方案。本文将通过一个待办事项应用的实战项目,深入解析如何使用Ratatui构建功能完整的终端应用。 [![Ratatui终端用户界面展示](https://raw.gitcode.com/gh_mirrors/ra/ratatui/raw/36854ef4f1af3

gitblog_00565的博客 519

深入探索 TypeScript 类型系统:结构类型、集合模型与类型收窄实战指南

> 导读:本文是 The Concise TypeScript Book(开源 TypeScript 简明教程,仓库位于 `typescript-book`)中「探索类型系统」一章的深度解析。这一章从 TypeScript 语言服务讲起,系统梳理结构类型(Structural Typing)、类型比较规则、类型即集合的模型、类型声明/断言、属性检查、类型推断、扩展与收窄等核心机制。读完本文,你将掌

gitblog_00664的博客 421

OrchardCore Shape Placement 完全指南:placement.json 规则、位置排序与 Fluent Location API

> 本文围绕 OrchardCore.DisplayManagement 的 Shape Placement(形状放置)机制展开:模块或主题如何通过根目录下的 `placement.json` 声明形状的渲染位置与可见性,`place` 位置字符串的完整语法与排序规则,编辑器形状的 Tabs/Cards/Columns 分组布局,以及显示驱动(Display Driver)中可用的 Fluent

gitblog_00213的博客 418

The Concise TypeScript Book:探索 TypeScript 类型系统——结构类型、比较规则、推断与收窄深度指南

本篇指南以《The Concise TypeScript Book》(开源免费 TypeScript 教程,仓库根目录见 [README.md](https://link.gitcode.com/i/850a295f42586e9319558a01962a8610))的「探索类型系统」章节为核心骨架,系统讲解 TypeScript 语言服务(tsserver)、结构类型系统、类型比较与可赋值性规则

gitblog_00289的博客 937
上一篇: 深入解析 C# 中 const 与 readonly 的核心区别
下一篇: C# 数字格式化全攻略:从占位符到快捷字母,一文掌握!
bugcome_com
博客等级 码龄3年 32粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bugcome_com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值