发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
6.1 类型的各种成员
在一个类型中,可以定义0个或多个以下种类的成员:
6.2 类型的可见性
在文件范围中定义类型时,可以将类型的可见性指定为public或internal。
using Systeml using System.Runtime.CompilerServices [assembly:InternalsVisibleTo("Winterllect,publickKey=12345678....asdf")] .....
定义类型的成员(包括嵌套类型)时,可指定成员的可访问性(accessibility)。
6.4 静态类
在C#中,要用static关键字定义不可实例化的类。这个关键字只能应用于类,不能引用于结构 (值类型)。这是因为CLR总是允许值类型实例化。
6.5 分部类、结构和接口
partial这个关键字告诉C#编译器,一个类、结构或者接口的定义源代码可能分散到一个或者多个源代码文件中。
internal class Employee { //非虚实例方法 public int32 GetYearsEmployed() { ... } //虚方法 public virtual String GenProgressReport() { ... } //静态方法 public static Employee Lookup(String name) { ... } }
编译器编译上述代码,会生成的程序集的方法定义表中写入三个记录项,每个记录项都用一组标识(flag)来指明该方法是实例犯法、虚方法还是静态方法。
public class Set { private Int32 m_length = 0; //这个重载的简便方法是非虚的 public Int32 Find(Object value) { return Find(value,0,m_length); } //这个重载的简便方法是非虚的 public Int32 Find(Object value, Int32 startIndex) { return Find(value, startIndexx, m_length - startIndex); } //功能最丰富的方法是虚方法,可以被重写 public virtual Int32 Find(Object value, Int32 startIndex, Int32 endIndex){ //可被重写的实现放在这里.... } //其他方法 }
合理使用类型的可见性和成员的可访问性
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
[你必须知道的.NET]第十九回:对象创建始末(下) - Anytao - 博客园
对象实例的TypeHandle在实例创建时,将指向MethodTable开始位置的偏移处(默认偏移12Byte),通过对象实例调用某个方法时,CLR根据TypeH...
ReferenceEquals, == , Equals
ReferenceEquals, == , Equals Equals , == , ReferenceEquals都可以用于判断两个对象的个体是不是相等。当然,还有一个equals的静态方法,静态equals与实例equals方法的唯一区别是:实例equals在对2个...
C#编码规范(1.0)
修改代码同时修改相应的注释,以保证注释与代码的一致性。建议先写注释,后写代码,注释和代码一起完成如果语句块(比如循环和条件分枝的代码块)代码太长,嵌套太多,可使用#region和#endregion标记,...
《Effective C#中文版:改善C#程序的50种方法》读书笔记
2、使用接口而不是使用类型可以避免装箱,即将值类型从接口实现,然后通过接口调用成员。十九、定义并实现接口优于继承类型。1、由于值类型对象的访问会创建一个该对象的副本,所以定义一个值类型的的...
应用程序配置和动态加载4----反射
在程序集中可以包含多个模块,而每个模块中又可以包含类、接口、委托等类型,在每个类型中又因为类型的不同包含不同的组成部分,比如类(class)中又可以包含字段、属性、方法、实现的接口、继承的父类...
C#基础全接触
锯齿数组(jagged Array)是元素为数组的数组,例:int[][] jaggedArray = new int[2][]; //包含二个元素,每个元素是个数组jaggedArray[0] = new int[2]; //每个元素必须初始化jaggedArray[1] = new ...
C#抽象类与接口的区别
6.抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非虚的,当然您也可以声明为虚的. 7.(接口)与非抽象类类似,抽象类也必须为在该类的基类列表中列出的接口的所有成员提...
JAVA面试700问(六) | 并发编程网
要做到这一点,外部类必须创建其内部类的对象(静态内部类除外)。内部类可以访问所有的外部类的成员,因为内部类就像是一个类的成员。* 编写和编译java代码* 然后创建一个C头文件* 创建?存根文件* 编...
Java内存分配、管理小结
Java内存分配、管理小结。Java栈内存,以帧的形式存放本地方法的调用状态,包括方法调用的参数、局部变量、中间结果等(方法都是以方法...
微信扫码,在手机上查看选中内容