度量快速开发平台-业界最好的全功能软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 210|回复: 4

[分享] 《Effective C#》读书笔记-1.C# 语言习惯-2.使用运行时常量(readonly)而不是编译...

[复制链接]

170

主题

1870

帖子

4272

积分

论坛元老

Rank: 8Rank: 8

积分
4272
发表于 2017-4-27 11:57:53 | 显示全部楼层 |阅读模式
概念
  • 编译时

编译时顾名思义就是正在编译的时候。那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码。(当然只是一般意义上这么说,实际上可能只是翻译成某个中间状态的语言。比如Java只有JVM识别的字节码,C#中只有CLR能识别的MSIL。另外还有链接器、汇编器。为了了便于理解我们可以统称为编译器)

那编译时就是简单的作一些翻译工作,比如检查你有没有粗心写错啥关键字了啊。有啥词法分析,语法分析之类的过程。就像个老师检查学生的作文中有没有错别字和病句一样。如果发现啥错误编译器就告诉你。如果你用微软的VS的话,点下build。那就开始编译,如果下面有errors或者warning信息,那都是编译器检查出来的。所谓这时的错误就叫编译时错误,这个过程中做的啥类型检查也就叫编译时类型检查,或静态类型检查(所谓静态就是没把代码放内存中运行起来,而只是把代码当作文本来扫描下)。
  • 运行时
所谓运行时就是代码跑起来了。被装载到内存中去了。(你的代码保存在磁盘上没装入内存之前是个死家伙。只有跑到内存中才变成活的)。而运行时类型检查就与前面讲的编译时类型检查(或者静态类型检查)不一样。不是简单的扫描代码。而是在内存中做些操作,做些判断。
代码  
为了更加直观的理解编译时和运行时的区别,我们看以下代码:
  1. class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             mm a = new mm();

  6.             nn b = new nn();//实例化一个nn的对象b

  7.             mm c = b; //把mm的对象c指向b

  8.             Console.WriteLine("非虚方法");

  9.             a.F();
  10.             b.F();
  11.             c.F();

  12.             Console.WriteLine("虚方法");
  13.             a.G();
  14.             b.G();
  15.             c.G();
  16.             Console.ReadKey();
  17.         }
  18.     }
  19.     class mm
  20.     {
  21.         public void F()
  22.         {
  23.             Console.WriteLine("mm.F()");
  24.         }

  25.         public virtual void G()        //声明了一个虚方法
  26.         {
  27.             Console.WriteLine("mm.G()");
  28.         }
  29.     }
  30.     class nn : mm
  31.     {
  32.         new public void F()         //隐藏了父类的F方法
  33.         {
  34.             Console.WriteLine("nn.F()");
  35.         }

  36.         public override void G()        //重写了方法G
  37.         {
  38.             Console.WriteLine("nn.G()");
  39.         }
  40.     }
复制代码


回复

使用道具 举报

165

主题

1919

帖子

4385

积分

论坛元老

Rank: 8Rank: 8

积分
4385
发表于 2017-4-27 17:32:35 | 显示全部楼层
回复

使用道具 举报

165

主题

1919

帖子

4385

积分

论坛元老

Rank: 8Rank: 8

积分
4385
发表于 2017-4-27 17:34:29 | 显示全部楼层
回复

使用道具 举报

514

主题

5611

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
12999
发表于 2017-4-27 18:03:05 | 显示全部楼层
回复 支持 反对

使用道具 举报

514

主题

5611

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
12999
发表于 2017-4-28 18:15:36 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2018-1-19 19:18 , Processed in 0.289987 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表