A: String str ="a";
  Response.Write(str);
  和
B: Response.Write("a")两者处理过程一样吗?内存占用一样吗?对于A 来说,运行时要分配一块内存;
对于B 来说,运行时到底分配一块内存吗?还是就是输出流,完全不占用内存?

解决方案 »

  1.   

    刚才咨询了一个高人
    告诉我的
    我只是转他说的话哈。
    A比B 多占内存 3-4个字节
    B占内存
      

  2.   

    A: String str ="a";     /////////创建一个对象。这个对象本身要有一个指针。这个指针。占4个字节。32位系统。
      Response.Write(str);
      和
    B: Response.Write("a")  //////////此处没有创建一个对象。只开了一个内存区域。
    由于.net是托管的。两者应该没有啥区别。只是a在解析时候会有些复杂了些。
    另外。Response.Write(str)或Response.Write("a" 都要先转成机器能直接执行的代码。这个转换过程。是有区别的。对于B 来说,运行时到底分配一块内存吗?还是就是输出流,完全不占用内存? 
    这个是东西先在内存做后来要传到客户端。从内存到网络。(但是中间传的并不是只有"a").以前搞软件开发<windows核心编程>这本书都是必备的。现在这些估计很少有人看了。
      

  3.   


    这个大家都明白,但是Response.Write("a")是否开辟了一块专门的区域来存储“a”呢
      

  4.   

    就算第二种好
    我还是会用第一种对于B 来说,运行时到底分配一块内存吗?还是就是输出流,完全不占用内存?
    对于常量字符串 编译器是会把他编译保存 在程序运行的时候加载到内存中详细参考《clr via C# 》某页 
      

  5.   

    每一个string 定义对象都会给内存创建一个位置!那两个东西就多了这个吧!