C#语言中的修饰符
public:公有访问。不受任何限制。
private:私有访问。只限于本类成员访问,子类和实例都不能访问。
protected:保护访问。只限于本类和子类访问,实例不能访问。
internal:内部访问。只限于本项目(程序集)内访问,其他不能访问。
protected internal :内部保护访问。只限于本项目或是本类和子类访问,其他不
能访问
1、类(class)
默认的修饰符:private
可以被修饰的:public,private,internal,protected,protected internal
2、枚举(enum)
默认的修饰符:private
可以被修饰的:public,private,internal
3、结构(struct)
默认的修饰符:public
4、接口(interface)
默认的修饰符:public
只能用在方法或变量的修饰符
(1) const:指定无法修改字段或局部变量的值。
用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改。
(2) new:从基类成员隐藏继承的成员。
在用作修饰符时,new关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成 员的派生版本将替换基类版本。在不使用 new修饰符的情况下隐藏成员是允许的,但会生成警告。使用 new显式隐藏成员会取消此警告,并记录代之以派生版本这一事实。
若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并使用 new修饰符修饰该成员。
对同一成员同时使用 new和override是错误的,因为这两个修饰符在含义上相互排斥。使用 new会用同样的名称创建一个新成员并使原始成员变为隐藏的,而 override则扩展继承成员的实现。
(3) virtual:在派生类中声明其实现可由重写成员更改的方法或访问器。
用于修饰方法、属性、索引器或事件声明,并且允许在派生类中重写这些对象。
调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。
默认情况下,方法是非虚拟的。不能重写非虚方法。
virtual修饰符不能与 static、abstract和 override修饰符一起使用。
除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。
(4) override:提供从基类继承的虚拟成员的新实现。
要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override修饰符。
(5) readonly:声明一个字段,该字段只能赋值为该声明的一部分或者在同一个类的构造函数中。
是可以在字段上使用的修饰符。当字段声明包括 readonly修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中。在此示例中,字段year的值无法在ChangeYear方法中更改,即使在类构造函数中给它赋了值。
=========================================================================
C#中除访问修饰符外,还有很多非访问的修饰符:
partial,abstract,sealed,static,virtual,override。
partial:部分类,可以将一个类分成几部分写在不同的文件中,最终编译时将合并
成一个文件,且各个部分不能分散在不同程序集中。
abstract:抽象类,不能够创建该类的实例;修饰方法时表示该方法需要由子类来
实现,如果子类没有实现该方法,那么子类同样是抽象类。含有抽象方
法的类一定是抽象类。
sealed:密封类,该类不能够被继承;修饰方法时表示该方法不能被重写。
static:静态类,不能被实例化,既然不能被实例化,那么这个类也就不能够含有
对象成员,即该类所有成员为静态;访问类成员时只能通过“类名.成员
名”的方式访问。
virtual:修饰方法成员,表示虚方法。父类可以含有该类的实现,子类可以重写该
方法。
override:表示该方法重写了父类的方法。
无或internal
类只能在当前项目中访问
public
类可以在任何地方访问公有访问。不受任何限制。
abstract或internal abstract
类只能在当前项目中访问,不能实例化,只能继承私有访问
public abstract
类可以在任何地方访问,不能实例化,只能继承
sealed或internal sealed
类只能在当前项目中访问,不能派生,只能实例化
public sealed
类可以在任何地方访问,不能派生,只能实例化
C#语言中的修饰符的更多相关文章
- JAVA语言中的修饰符
JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...
- 关于Java语言中那些修饰符
一.在java中提供的一些修饰符,这些修饰符可以修饰类.变量和方法,在java中常见的修饰符有:abstract(抽象的).static(静态的).public(公共的).protected(受保护的 ...
- 枚举java语言中的修饰符组合
package model; /*22:37 2019/7/20*/ /* top class的修饰符组合 abstract final public 2 * 2 * 2 warning: abstr ...
- C/C++ 中 const 修饰符用法总结
C/C++ 中 const 修饰符用法总结 在这篇文章中,我总结了一些C/C++语言中的 const 修饰符的常见用法,供大家参考. const 的用法,也是技术性面试中常见的基础问题,希望能够帮大家 ...
- Java中访问修饰符public、private、protecte、default
Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅 ...
- Java中的 修饰符
java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符 访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共 ...
- Java中final修饰符深入研究
一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很 ...
- vue中的修饰符
Vue2.0学习笔记:Vue事件修饰符的使用 事件处理 如果需要在内联语句处理器中访问原生DOM事件.可以使用特殊变量$event,把它传入到methods中的方法中. 在Vue中,事件修饰符处理 ...
- Java中各种修饰符与访问修饰符
Java中各种修饰符与访问修饰符 类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备 ...
随机推荐
- WebStorm出现中文乱码解决代码
今天用WebStorm运行html代码时,出现中文乱码,试了Settings里File Encodings,将编码形式改为utf-8,结果还是不行. 最后用代码解决了问题,代码如下: <meta ...
- 如何检测或判断一个文件或字节流(无BOM)是什么编码类型
前言: 昨天,在文章:终于等到你:CYQ.Data V5系列 (ORM数据层,支持.NET Core)最新版本开源了 中, 不小心看到一条留言: 然后就去该地址看了一下,这一看,顺带折腾了一天. 今天 ...
- 不可思议的纯 CSS 实现鼠标跟随效果
直接进入正题,鼠标跟随,顾名思义,就是元素会跟随着鼠标的移动而作出相应的运动.大概类似于这样: 通常而言,CSS 负责表现,JavaScript 负责行为.而鼠标跟随这种效果属于行为,要实现通常都需要 ...
- 【AI开发】基于深度学习的卡口车型、车牌识别
服务端代码后面给出 卡口车型.车牌识别demo截图 服务器:
- SpringBoot 2.X集成Hive-jdbc 3.1.1
最近公司有一个需求,需求的内容是根据用户页面选择的参数条件查询Hive,数量量大致是300万以内,要求3秒响应.使用的其它的技术就不要说了,先说说SpingBoot集成Hive-jdbc吧,网上虽然有 ...
- was cached in the local repository, resolution will not be reattempted until the update interval of fintech has elapsed or updates are forced
今天使用命令mvn compile编译maven项目时提示错误信息,错误信息如下: [ERROR] Failed to execute goal on project <project_name ...
- 【Android Studio安装部署系列】四、Android SDK目录和作用分析
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android SDk Tool软件开发工具包(software development kit).被软件开发工程师用于为特定的软件 ...
- RecyclerViewLoadMoreDemo【封装上拉加载功能的RecyclerView,搭配SwipeRefreshLayout实现下拉刷新】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 封装含有上拉加载功能的RecyclerView,然后搭配SwipeRefreshLayout实现下拉刷新.上拉加载功能. 在项目中将 ...
- MySQL在CenterOS和Ubuntu的安装
声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20-linux-glib ...
- k8s网络之Flannel网络
k8s网络主题系列: 一.k8s网络之设计与实现 二.k8s网络之Flannel网络 三.k8s网络之Calico网络 简介 Flannel是CoreOS团队针对Kubernetes设计的一个网络规划 ...