前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#经典问题总结一

C#经典问题总结一

作者头像
Isaac Zhang
发布2019-09-10 18:13:23
5050
发布2019-09-10 18:13:23
举报
文章被收录于专栏:奔跑的人生奔跑的人生

No. 1 C#是托管语言,那么是不是说明使用C#,就能保证不会出现内存泄露以及其他资源的泄漏?如果不是,那么在哪些情况下可能出现泄漏?

答案:C#不能保证没有资源泄漏。比如如下几种情况可能会造成资源泄漏:(1) 调用Native code,比如用P/Invoke或者调用COM;(2) 读写文件时的,没有及时close stream, 或者ADO.NET连数据库时,没有及时关闭连接,也算资源泄漏?(3)注册事件后没有remove,导致publisher和subscriber的强依 赖,垃圾回收可能会被推迟;(4).NET还定义了一些方法直接申请非托管内存,比如Marshal.AllocHGlobal和Marshal.AllocCoTaskMem。通过这种方式得到的内存,如果没有及时释放,也会造成内存泄露。

No. 2 下面的两段C#有哪些不同?

代码语言:javascript
复制
View Code 
 1     static void CatchException1()
 2     {
 3         try{
 4             Function();
 5         }
 6         catch{
 7             throw;
 8         }
 9     }
10     static void CatchException2()
11     {
12         try{
13             Function();
14         }
15         catch (Exception e){
16             throw e;
17         }
18     }

答案:两个函数的catch都是重新抛出截获的exception,但抛出的exception的call stack是不一样的。对于第一种方法,exception的call stack是从最开始的抛出地点开始的。对于第二种方法,exception的call stack是从CatchException2开始的,最初抛出的地方相关的信息被隐藏了。

No.3:运行下面的C#代码,打印出来的结果是什么?

代码语言:javascript
复制
View Code 
 1     struct Person
 2     {
 3         public string Name;
 4         public override string ToString()
 5         {
 6             return Name;
 7         }
 8     }
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             ArrayList array = new ArrayList();
14             Person isaac = new Person() { Name = "isaac" };
15             array.Add(isaac);
16             Person first = (Person)array[0];
17             first.Name = "zhang";
18             Console.WriteLine(array[0].ToString());
19         }
20     }

答案:Person的定义是一个struct,因此是一个值类型。在运行到语句Person first = (Person)array[0]的时候,first是array[0]的一个拷贝,first和array[0]不是一个实例。因此修改first对array[0]没有影响。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-12-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档