首 页IT知识库收藏内容
当前位置:翔宇亭IT乐园IT知识库C#C#基础

C#自动化内存管理

减小字体 增大字体 作者:佚名  来源:转载  发布时间:2012-04-26 22:01:42

自动化的内存管理(Automatic memory management)

手动管理内存需要程序员自行分配和释放内存块。这要求程序员有清晰的头脑和对整个运行过程有十分的把握。而c#把程序员从这难以承担的任务中解放出来。在多数的情况下,这种自动内存管理提高代码的质量和程序员的生产力。并且,不会对程序的意图和执行产生负面的影响。

下面是一个例子

using System;
public class Stack
{
   private Node first = null;
   public bool Empty
   {
      get { return (first == null); }
   }
   public object Pop()
   {
      if (first == null)
        throw new Exception("空栈,不能执行弹栈操作。");
      else
      {
          object temp = first.Value;
          first = first.Next;
          return temp; 
      }
   }
   public void Push(object o)
   {
      first = new Node(o, first);
   }
   class Node
   {
      public Node Next;
      public object Value;
      public Node(object value): this(value, null)
      {}
      public Node(object value, Node next)
      {
         Next = next;
         Value = value;
      }
   }
}
class Test
{
    static void Main()
    {
       Stack s = new Stack(); 
       for (int i = 0; i < 10; i++)
          s.Push(i);
       while (!s.Empty)
          Console.WriteLine(s.Pop());
     }
}

stack类实现了一系列Node的实例。大家可以看看stack类的Push方法。Node的实例就是在Push方法中创建的。

 就是“first = new Node(o, first);”。new就是用来创建类实例的。是负责初始化类实例。而在c/c++中释放这些实例要用另一个关键字“delete”。但是在什么时候用delete呢,这通常是很费神的活,老手也会阴沟里翻船。但在c#中没有用“delete”。

 当Node的实例不需要时,垃圾收集器(garbage collector)自动销毁它,不用俺操心喽。

微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

个人成长离不开各位的关注,你的关注就是我继续前行的动力。

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
愿您的精彩评论引起共鸣,带来思考和价值。
用户名: 查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:
关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2024 biye5u.com. All Rights Reserved.