05 类型及成员(常量 字段 方法).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ref 从CIL和CLR角度,out和ref功能相同 out和ref的区别在于编译器需要进一步确保代码的正确性(ref参数必须被初始化)。 public static void AddVal(ref Int32 v) { v += 10; } public static void Main() { Int32 x = 5; AddVal(ref x); // 用作ref参数的x必须被初始化 Console.WriteLine(x); // 显示15 } 8.7 向方法传递可变数量的参数 params 声明方法的参数类型 从减少错误的观点来看,设计方法参数类型时应尽可能指定限制最弱的类型(基类、接口);设计方法返回类型时应尽可能指定限制最强的类型 较弱的返回类型增加了灵活性 public void ProcessBytes(Stream someStream) public void ProcessBytes(FileStream fileStream) public FileStream OpenFile() public Stream OpenFile() public IListString GetStringCollection() public ListString GetStringCollection() 小结 类型的可见性和成员的可访问性 实例构造器和类型构造器 操作符重载和转换操作符 向方法传递参数 * CAS * 编译后,常量的值50就嵌入了Program,此时不再需要SomeLibraryType.dll 当SomeLibraryType.dll中的常量发生改变,将不会再影响Program(隐患) 若类是abstarct,则默认构造器是protected,否则构造器为public。若类是static/sealed/ abstract 则编译器不会生成默认构造器 * * 上述类型两个字段m_s、m_d都被预先初始化 三个构造器都会先对字段进行初始化,导致编译器生成了3次初始化m_s和m_d的代码 应定义一个单独的初始化构造器用来对字段进行初始化,其他构造器调用初始化构造器 * 编译错误:结构不能包含显式无参构造器 * 第二段代码:构造器必须为所有字段赋值 .NET 程序设计 .NET Programming 西电软件学院 邓岳 anfdeng@ 类型和成员 常量、字段 方法 类型和成员基础 类型成员的种类 类型的可见性和可访问性 静态类 组件、多态和版本控制 类型成员的种类 常量:数值恒定不变,一般是静态成员 字段(fields):一般声明为私有 实例构造函数:初始化实例字段 类型构造函数:初始化类型的静态字段 方法 操作符重载 转换操作符:定义类型转换,并非所有语言都支持,不属于CLS 属性(properties) 事件:包含用于订阅和退订的方法 类型:嵌套类 编译器对类型成员的支持 编译器应能为类型的每个成员生成元数据(metadata)和CIL。 元数据格式与编程语言无关,因此所有语言都可以生成并使用元数据,以此进行跨语言操作。 编译器可能生成额外成员及额外元数据 一个事件会生成一个字段+2个方法+额外元数据 类型的可见性 Type Visibility 一般来说,类型可见性设置为public或internal internal仅对定义该类型的程序集中的代码可见,public对其他程序集中的代码也可见 若无显式指定,C#编译器默认internal 友元程序集(friend assembly) internal类可通过设置友元程序集对其他程序集可见,通常友元程序集与原程序集同时发布 通过System.Runtime.CompilerServices中的InternalsVisibleTo标注来设置 using System; using System.Runtime.CompilerServices; // 要指定程序集名称和公钥 [assembly:InternalsVisibleTo(Microsoft, PublicKey=b77a5c56...1934e089)] internal sealed class SomeInternalType { ... } --------------------------------------------------------- // 以下代码位于Microsoft程序集 using System; internal sealed class Foo { private static Object SomeMethod() { // 像public一样使用internal类型 SomeIn

文档评论(0)

0520 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档