c# 访问修饰符的访问权限
1、 访问修饰符、
指定声明的类型和类型成员的可访问性。
(1) public:是类型和类型成员的访问修饰符。公共访问是允许的最高访问级别。对访问公共成员没有限制。
(2) private:是一个成员访问修饰符。私有访问是允许的最低访问级别。私有成员只有在声明它们的类和结 构体中才是可访问的。
(3) internal:是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的。
(4)protected:是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问。
2、abstract:指示某个类只能是其他类的基类。
可以和类、方法、属性、索引器及事件一起使用。在类声明中使用 abstract修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。
3、const:指定无法修改字段或局部变量的值。
用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改。
4、event:声明事件。
类和结构使用事件将出现的可能影响对象状态的事件通知给对象。
5、extern:指示在外部实现方法。
用于声明在外部实现的方法。extern修饰符的常见用法是在使用 Interop 服务 调入非托管代码时与 DllImport属性一起使用;在这种情况下,该方法还必须声明为 static。
extern关键字还可以定义外部程序集别名,使得可以从单个程序集中引用同一组件的不同版本。
将 abstract和 extern修饰符一起使用来修改同一成员是错误的。使用 extern修饰符意味着方法在 C# 代码的外部实现,而使用 abstract修饰符意味着在类中未提供方法实现。
6、new:从基类成员隐藏继承的成员。
在用作修饰符时,new关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成员的派生版本将替换基类版本。在不使用 new修饰符的情况下隐藏成员是允许的,但会生成警告。使用 new显式隐藏成员会取消此警告,并记录代之以派生版本这一事实。
若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并使用 new修饰符修饰该成员。
对同一成员同时使用 new和override是错误的,因为这两个修饰符在含义上相互排斥。使用 new会用同样的名称创建一个新成员并使原始成员变为隐藏的,而 override则扩展继承成员的实现。
在不隐藏继承成员的声明中使用 new修饰符将会生成警告。
7、override:提供从基类继承的虚拟成员的新实现。
要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override修饰符。
8、partial:在整个同一程序集中定义分部类和结构。
分部类型定义允许将类、结构或接口的定义拆分到多个文件中。
9、readonly:声明一个字段,该字段只能赋值为该声明的一部分或者在同一个类的构造函数中。
是可以在字段上使用的修饰符。当字段声明包括 readonly修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中。在此示例中,字段year的值无法在ChangeYear方法中更改,即使在类构造函数中给它赋了值。
10、sealed:指定类不能被继承。
可以应用于类、实例方法和属性。密封类不能被继承。密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed修饰符必须始终与override一起使用。
在类声明中使用 sealed修饰符可防止继承此类
11、static:声明属于类型本身而不是属于特定对象的成员。
声明属于类型本身而不是属于特定对象的静态成员。可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。
12、unsafe:声明不安全的上下文。该上下文是任何涉及指针的操作所必需的。
13、virtual:在派生类中声明其实现可由重写成员更改的方法或访问器。
用于修饰方法、属性、索引器或事件声明,并且允许在派生类中重写这些对象。
调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。
默认情况下,方法是非虚拟的。不能重写非虚方法。
virtual修饰符不能与 static、abstract和 override修饰符一起使用。
除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。
· 在静态属性上使用 virtual修饰符是错误的。
· 通过包括使用 override修饰符的属性声明,可在派生类中重写虚拟继承属性。
14、volatile:指示字段可由操作系统、硬件或并发执行线程等在程序中进行修改。
volatile关键字表示字段可能被多个并发执行线程修改。声明为 volatile的字段不受编译器优化(假定由单个线程访问)的限制。这样可以确保该字段在任何时间呈现的都是最新的值。
volatile修饰符通常用于由多个线程访问而不使用 lock 语句(C# 参考)语句对访问进行序列化的字段。
volatile关键字可应用于以下类型:
· 引用类型。
· 指针类型(在不安全的上下文中)。
· 整型,如 sbyte、byte、short、ushort、int、uint、char、float 和 bool。
· 具有整数基类型的枚举类型。
· 已知为引用类型的泛型类型参数。
· IntPtr 和 UIntPtr。
所涉及的类型必须是类或结构的字段。不能将局部变量声明为 volatile。
c# 访问修饰符的访问权限的更多相关文章
- Java知多少(19)访问修饰符(访问控制符)
Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: 1 public class className { 2 // body of class 3 } 4 pr ...
- Java访问修饰符(访问控制符)
Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...
- java入门---修饰符&访问修饰符&非访问修饰符
Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class ...
- 《Java基础知识》Java访问修饰符(访问控制符)
Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...
- 类的高级:访问修饰符、封装、静态类成员static、内部类;
访问修饰符: 公开访问(public):对所有子类,非子类访问: 受保护的(protected):只有同包子类.非子类.不同包子类可访问,不同包非子类不可访问: 私有的(private):只有本类可访 ...
- java 访问修饰符
此题考察修饰符,函数定义等,故从网上搜罗了下相关资料,总结如下: 类.方法.成员变量和局部变量的可用修饰符 修饰符 类 成员访求 构造方法 成员变量 局部变量 abstract(抽象的) √ √ - ...
- C#封装访问修饰符
C# 封装 封装 被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中".在面向对象程序设计方法论中,封装是为了防止对实现细节的访问. 抽象和封装是面向对象程序设计的相关特性. ...
- Java访问修饰符(转)
类.方法.成员变量和局部变量的可用修饰符 修饰符 类 成员方法 构造方法 成员变量 局部变量 abstract(抽象的) √ √ - - - static (静态的) - √ - √ - public ...
- Scala:访问修饰符、运算符和循环
http://blog.csdn.net/pipisorry/article/details/52902234 Scala 访问修饰符 Scala 访问修饰符基本和Java的一样,分别有:privat ...
随机推荐
- MySQL的if,case语句
IF表达式 IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为exp ...
- WordPress Ultimate Auction插件跨站请求伪造漏洞
漏洞名称: WordPress Ultimate Auction插件跨站请求伪造漏洞 CNNVD编号: CNNVD-201306-396 发布时间: 2013-09-11 更新时间: 2013-09- ...
- nginx -- handler模块(100%)
handler模块简介 相信大家在看了前一章的模块概述以后,都对nginx的模块有了一个基本的认识.基本上作为第三方开发者最可能开发的就是三种类型的模块,即handler,filter和load-ba ...
- ☀【SeaJS】SeaJS Grunt构建
如何使用Grunt构建一个中型项目?https://github.com/twinstony/seajs-grunt-build spmjshttp://docs.spmjs.org/doc/inde ...
- Java同步
同步:★★★★★ 好处:解决了线程安全问题. 弊端:相对降低性能,因为判断锁需要消耗资源,产生了死锁. 定义同步是有前提的: 1,必须要有两个或者两个以上的线程,才需要同步. 2,多个线程必须保证使用 ...
- maya 操作自我整理(二)
随身携带自己的maya习惯我们在一台电脑上设置好自己的使用习惯,包括自己定义的快捷键.标记菜单.界面颜色.工具架等信息,当换到另一个工作环境时再进行设置十分不便利,将自己的习惯随身带走有利于我们更快捷 ...
- git bash【初级入门篇】
最近公司打算使用git代替之前的svn版本控制工具,趁此机会打算好好学学git,这个号称当今世界最牛的分布式版本控制工具. 一.[git和svn的主要区别] 1.去中心化 svn以及微软的TFS均采用 ...
- java---Unicode-字符转换器
实现一个字符(包括汉字)的简单互相转换: package cn.hncu.gui2; import java.awt.Button; import java.awt.Color; import jav ...
- [git] git 分支( branch ) 的基本使用
分支( branches ) 是指在开发主线中分离出来,做进一步开发而不影响到原来主线. Git 存储的不是一系列的更改集( changeset ),而是一系列快照.当你执行一次 commit 时, ...
- hdoj 2141 Can you find it?【二分查找+暴力】
Can you find it? Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/10000 K (Java/Others ...