c#常用的修饰符

前言

了解c#常用的修饰符,会对我们有很大的帮助

存取修饰符

cs 复制代码
public:(公有的)存取不受限制

protected:(受保护的)只有包含该成员的类以及派生类可以存取

private:(私有的)只有包含该成员的类可以使用

类修饰符

cs 复制代码
abstract:(抽象类)

抽象类与抽象方法的声明中必须包含abstract,抽象方法必须在抽象类中声明且不能有方法体

派生类若没有实现所有的抽象方法,则抽象类也必须声明为抽象类。

sealed:(密封类)阻止其他类从本类继承

密封类不能被继承

密封类中不能包含虚方法和抽象方法,密封类没有为派生类提供实现其虚方法和抽象方法的机会。

成员修饰符

cs 复制代码
abstract:抽象方法,没有实现。

sealed:密封方法,防止派生类对该方法的重载,密封方法必须对基类的虚方法进行重载,提供具体的实现方法。

delegate:委托

const:指定该类成员为常量,其值只允许读取,不允许修改。

event:声明一个事件

extern:指示方法在外部实现

override:重写,对基类继承成员的新实现

readonly:指示一个域只能在声明时以及相同类的内部被赋值

static:指示一个成员属于类本身,即定义后可不实例化

virtual:虚拟成员

new:在派生类中隐藏指定的基类成员,从而实现重写的功能。

var和dynamic

cs 复制代码
var和dynamic的本质区别是类型判断的时间不同,前者是编译时,后者是运行时。

1.var在声明变量方面简化语法
(只能是局部变量),在编译时交给编译器推断。

2.dynamic也是为简化语法而生的,它的类型推断是交给系统来执行的
(运行时推断类型)。

3.var不能用于字段、参数等,而dynamic则可以。

4.var在初始化的时候就确定了类型。

5.dynamic可以用于方法字段、参数、返回值以及泛型参数,把动态发挥的淋漓尽致。

6.dynamic在反射方面做的可以,只是我自己没有尝试过。

7.var是C# 3.0的产物,dynamic是C# 4.0的产物。

修饰符

cs 复制代码
public:任何地方都可以调用

protected:类和他的子类

private:只能在被类成员调用

internal:同一应用程序集内部(在VS.Net中一个工程中)

sealed:修饰类时表示该类不能够被继承,修饰方法时表示该方法不能被覆写。

abstract:修饰类的时候表示该类为抽象类,不能够创建该类的实例。修饰方法的时候表示该方法需要由子类来实现,如果子类没有实现该方法那么子类同样是抽象类;且含有抽象方法的类一定是抽象类

virtual :修饰方法成员,表示虚方法。父类可以含有该类的实现,子类可以覆写该函数。

override:表示该方法为覆写了父类的方法。

readonly:修饰字段,表示该字段为只读字段。

const:修饰字段,表示该字段为只读字段。并且在编译时必须能够明确知道该字段的值,
其值是硬编码到程序中去的,修改了该类型成员后需要重新编译才能使修改生效。

partial:部分类,可以将一个类分成几部分写在不同文件中,最终编译时将合并成一个文件,
且各个部分不能分散在不同程序集中

static:修饰类时表示该类时静态类,不能够实例化该类的对象,既然不能实例化该类,
那么这个类也就不能够含有对象成员,即该类所有成员为静态;修饰类成员时,
该成员为类成员,只能通过【类.成员名】的方式访问

new:修饰符只能用于嵌套的类,表示对继承父类同名类型的隐藏。
相关推荐
海宇AI1 小时前
零信任架构实战:基于海宇柠檬查出险-登记证构建自动化车抵贷核保网关
java·人工智能·架构·自动化
xiangyun611 小时前
【408数据结构 08】队列:循环队列判空判满,408年年考,一次讲清
c语言·开发语言·数据结构·c++·算法
xiangyun611 小时前
【408数据结构 06】双链表、循环链表、静态链表
c语言·开发语言·数据结构·c++·算法
cfm_29142 小时前
单例模式详解
java
我叫张土豆3 小时前
本体论、DDD、SDD、TDD:AI 编程时代的四层认知栈
java·人工智能
唐青枫3 小时前
对象到底住在哪里?C#.NET 托管堆从分配、GC 到内存排查
c#·.net
白远山3 小时前
家政服务家政社区派单实战:调度系统架构设计与实现指南
java·开发语言·小程序·架构·需求分析
海南java第二人3 小时前
从诞生到回收:JVM对象生命周期与垃圾回收全链路解析
java
SL_staff3 小时前
JVS-Logic:从页面配置工具到企业级业务逻辑中枢的技术演进
java·算法·全栈
DevRay3 小时前
Java 21虚拟线程深度实战:告别线程池焦虑,百万并发吞吐量直接翻倍(原理+代码+避坑)
java·开发语言