zoukankan      html  css  js  c++  java
  • C#经典问题总结一

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

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

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

    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,但抛出的exceptioncall stack是不一样的。对于第一种方法,exceptioncall stack是从最开始的抛出地点开始的。对于第二种方法,exceptioncall stack是从CatchException2开始的,最初抛出的地方相关的信息被隐藏了。

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

    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]的时候,firstarray[0]的一个拷贝,firstarray[0]不是一个实例。因此修改firstarray[0]没有影响。

  • 相关阅读:
    [洛谷P1507]NASA的食物计划 以及 对背包问题的整理
    [洛谷P3811]【模板】乘法逆元
    56级信息奥赛12学子汇总
    [洛谷U63006]导函数最小系数
    [洛谷U62364]三次函数极值
    [洛谷U62358]求导函数
    Nagios 请检查HTTP服务器关于该CGI的访问权限设置
    安装Cacti-plugin
    解压安装Cacti在apache中的补充
    64位操作系统下IIS报“试图加载格式不正确的程序”错误
  • 原文地址:https://www.cnblogs.com/zhangpan1244/p/2305595.html
Copyright © 2011-2022 走看看