1、c#垃圾回收机制

从以下方面入手展开:  1、压缩合并算法   2、代的机制  3、GC调用终结器 Garbage Collector

. NET采用了和Java类似的方法由CLR(Common Language Runtime)来管理

.NET的GC机制有这样两个问题:

首先,GC并不是能释放所有的资源。它不能自动释放非托管资源。

第二,GC并不是实时性的,这将会造成系统性能上的瓶颈和不确定性。

GC并不是实时性的,这会造成系统性能上的瓶颈和不确定性。所以有了IDisposable接口,IDisposable接口定义了Dispose方法,这个方法用来供程序员显式调用以释放非托管资源。使用using语句可以简化资源管理。

2、委托和事件

先说它的定义:委托的本质是类,类型安全的指针,然后从用途上考虑,事件是包装的委托,但事件不是委托。事件是由一个私有委托和add、remove 方法组成。

事件、索引器、属性本质都是方法。接口只可以定义方法。所以接口也可以定义“事件、索引器、属性”,因为他们的本质也是add、remove 方法。

委托是一种可以指向方法的数据类型,可以声明委托类型变量。

声明委托的方式:delegate返回值类型   委托类型名(参数)

比如delegate void MyDel(int n) 。C#中默认写了2中委托Action<>,Func<>,Action基本上都是void没有返回值,Func是有返回值的

1 usingSystem.Collections.Generic;2 usingSystem.Linq;3 usingSystem.Text;4 usingSystem.Threading.Tasks;5

6 namespaceTestConsole7 {8 delegate voidMyDel();9 classProgram10 {11

12 static void Main(string[] args)13 {14 person p = newperson();15 p.QingZhu +=ShowMsg;16 p.age = 24;17 Console.ReadKey();18 }19 static voidShowMsg()20 {21 Console.WriteLine("今年是你的本命年!恭喜你");22 }23 }24 classperson25 {26 private intAge;27 public intage28 {29 get

30 {31 returnage;32 }33 set

34 {35 if (value % 12 == 0)36 {37 if (QingZhu != null)38 {39 QingZhu();//执行事件

40 }41 }42 }43 }44 public eventMyDel QingZhu;45 }46 }

View Code

1 usingSystem;2 usingSystem.Collections;3 usingSystem.Collections.Generic;4 usingSystem.Linq;5 usingSystem.Text;6 usingSystem.Threading.Tasks;7

8 namespaceTestConsole9 {10 delegate voidMyDel();11 classProgram12 {13

14 static void Main(string[] args)15 {16 person p = newperson();17 p.qingzhu +=ShowMsg;18 p.age = 24;19 Console.ReadKey();20 }21 static voidShowMsg()22 {23 Console.WriteLine("今年是你的本命年!恭喜你");24 }25 }26 classperson27 {28 private intAge;29 public intage30 {31 get

32 {33 returnage;34 }35 set

36 {37 if (value % 12 == 0)38 {39 if (this.QingZhu != null)40 {41 this.QingZhu();//执行事件

42 }43 }44 }45 }46 privateMyDel QingZhu;47 public eventMyDel qingzhu48 {49 add50 {51 this.QingZhu +=value;52 }53 remove54 {55 this.QingZhu -=value;56 }57 }58

59 }60 }

View Code

3、c#索引

索引可以是字符串类型的,可以允许有多个索引参数,下面的方法我就可以定义多个参数。常见的Dictory也是索引的一种。在IL中本质其实是Get_Item 方法(无参数)、Set_Item 方法(参数:value)。

1 classMyIntIndex2 {3 private static string[] name = { "dandan", "chizi", "jianguo"};4 public string this[intindex]5 {6 get

7 {8 string n =name[index];9 returnn;10 }11 set

12 {13 name[index] =value;14 }15 }16 }17 }

View Code

4、装箱和拆箱

值类型和引用类型之间的转换。频繁装箱和拆箱会导致系统性能降低,可考虑用泛型。值类型赋值给object为装箱操作,值类型赋值给object拆箱(显示转换)。装什么类型拆箱就是什么类型,除非C#中convert.toInt32 等内置的这些方法可以强制拆箱。

5、泛型

考得不多,但我们平常用的比较多。所以对泛型的一些东西需要了解,如泛型约束等。

泛型约束 public void GetEntity() where T:class

where T :struct //约束T必须为值类型

where K : class //约束K必须为引用类型

where V : IComparable //约束V必须是实现了IComparable接口

where W : K //要求W必须是K类型,或者K类型的子类

where X :class ,new () // 或者写出 new class() ;   X必须是引用类型,并且要有一个无参的构造函数(对于一个类型有多有约束,中间用逗号隔开)

6、c#如何调用c++ 的dll?为什么可以调用

右击添加类中的“TypeLib中的MFC类”选项实现跨平台调用。添加好后会生成h文件和cpp文件

填写完后Function.h文件会报错,错误类型如下。这里需要在C++项目里面设置,让动态库受到公共语言运行时的支持。如下图所示:打开项目属性

C#和C++在vs中的语法类型都会编译成CTS(Common Type System通用数据类型)生成.net 中有CLS(Common Language Specification公共语言允规范) 并在IL代码中的CLR(Common Language Runtime 公共语言运行池)中运行。

Int和Int32,string与String的区别,一个是C#代码中的类型,一个是IL中的CTS通用数据类型

clr 面试_C# 常见面试问题汇总相关推荐

  1. 面试系列 -- 常见面试问题回答思路

    面试过程中,面试官会向应聘者发问,而应聘者的回答将成为面试官考虑是否接受他的重要依据.对应聘者而言,了解这些问题背后的"猫腻"至关重要.本文对面试中经常出现的一些典型问题进行了整理 ...

  2. 【面试】—常见面试问题,面试技巧和注意事项

    1.请你自我介绍一下你自己? 回答提示:往往大多数人在回答这个问题时,只说姓名.年龄.爱好.工作经验,这些在简历上都有.(面试官不瞎又不是看不到) 一家企业最希望知道的是求职者能否胜任工作,包括:最强 ...

  3. 【Android -- 面试】常见面试技术要点

    不断学习,做更好的自己!

  4. 计算机专业常见面试题目汇总

    机器学习与深度学习常见面试题(上)-知乎 机器学习与深度学习常见面试题(下)-知乎 计算机考研专业课思维导图-知乎 (31条消息)常见C++笔试面试题整理_ljh0302的专栏-CSDN博客_c++面 ...

  5. 推荐收藏 | 算法工程师常见面试问题及相关资料汇总

    关注上方"视学算法",选择"星标公众号", 关键时间,第一时间送达! 编辑:数据派THU Github传送门: https://github.com/lcylm ...

  6. 面试中 项目遇见的难点答案_你和offer之间只差这几个面试问题!常见面试问题汇总...

    99%的人都会大呼"坑爹"的面试问题,你真的知道该怎么回答吗? 记得第一次面试的时候,面试官对简历也很满意,前面都聊的好好的,最后问了一句简历上没有的内容:你的职业规划是什么?我一 ...

  7. linux运维培训后面试,Linux运维岗位面试中常见的面试问题汇总

    今天小编要跟大家分享的文章是关于Linux运维岗位面试中常见的面试问题汇总.正准备参加Linux运维面试的小伙伴们来和小编一起看一看吧,希望本篇文章能够对正在从事Linux运维工作的小伙伴们有所帮助. ...

  8. (建议收藏)算法工程师常见面试问题及相关资料汇总

    目录 算法工程师 Github.牛客网.知乎.个人博客.微信公众号.其他 机器学习 面试问题.资料.代码实战 深度学习 面试.资料.代码实战Pytorch.代码实战TensorFlow.网课 C/C+ ...

  9. 算法工程师常见面试问题及相关资料汇总

    点击上方"AI派",选择"设为星标" 最新分享,第一时间送达! ☞[加薪必备]全套零基础学AI资料免费领! 目录 算法工程师 Github.牛客网.知乎.个人博 ...

最新文章

  1. 首个最全的MongoDB 3.6 全览
  2. jquery调取java接口_jQuery方式实现ajax接口调用
  3. android编译.a文件,Android 7.1源码编译导入AS完整教程
  4. 【AT2434】JOI 公園 (JOI Park) 最短路+贪心
  5. 25大技术主题向您发出最后一次约【惠】邀请
  6. python学习与数据挖掘_Python学习之数据挖掘(三)
  7. mysql 索引 lt =_MySQL索引相关
  8. 关于 webapi ajax进度条信息设置
  9. promise用法_【JavaScript 教程】异步操作——Promise 对象
  10. 北航院系和数字的对应关系
  11. LINUX开源监控平台Nagios(服务监控配置)
  12. homebrew下安装mysql_Mac下homebrew安装Mysql以及配置问题
  13. 阶段3 2.Spring_08.面向切面编程 AOP_5 切入点表达式的写法
  14. 如何下载FLASH动画
  15. Java学习视频教程
  16. win7更改计算机名后桌面壁纸,win7桌面壁纸不能更换怎么办-处理win7桌面壁纸无法更换的方案 - 河东软件园...
  17. 理解Window和WindowManager
  18. Java Session对象的钝化和活化
  19. 实验六、contentprovider实验+SQLite数据库的实现
  20. 抽象代数之三次方程的求根公式和构造一类整系数三次方程

热门文章

  1. 悟空qq通讯录加好友
  2. Node.js详细下载与安装
  3. 程序员成才的关键——内在兴趣和善于发现
  4. Google Analytics Service account 认证指南
  5. LVGL开发指导手册
  6. Coding哥,魅族让你用洪荒之力来夺宝了!
  7. Axure幻灯片案例
  8. 人民币首度超过美元!
  9. linux双机连通找不到con1,Linux服务器崩溃 - 错误在反序列化(节点$ CON):错误的连接...
  10. 四羧基锌酞菁(ZnC4Pc),Zn-taPc 酞菁类化合物,齐岳生物供应酞菁材料