网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
C#中String与StringBuilder的区别
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式

using System;
using System.Collections.Generic;
using System.Text;

namespace 字符串
{
  class Program
  {
  static void Main( string args )
  {
  //字符串频繁分配内存演示(不推荐)
  //以下代码将字符串全总向后移一个值,原来的字符串将会被替换成新加密后的.
  //但是效率低下,greetingTxt这个string类型的对象,每次 += 时其实就是将原来的对象删除引用,从而指向新的引用对象.
  //这样在循环中,多次对string重新分配内存,堆中将会产生大量的废弃数据等待回收..

  string greetingTxt = "Hello from all the guys atWrox Press. ZZZAAA";

  for ( int i = ''z'' ; i >= ''a'' ; i-- )
  {
  char old = ( char )i;
  char new1 = ( char ) (i + 1);

  greetingTxt = greetingTxt.Replace( old , new1 );
  }


  for ( int i = ''Z'' ; i >= ''A'' ; i-- )
  {
  char old = ( char )i;
  char new1 = ( char )( i + 1 );

  greetingTxt = greetingTxt.Replace( old , new1 );
  }

  Console.WriteLine( greetingTxt );
  Console.WriteLine( "StringBuilder----------------------------------" );

  //StringBuilder 演示
  //StringBuilder类只支持一般的字符串删除增加功能,不像String那么的多,但是效率极高
  //String通常分配堆空间时,是刚刚好的大小.而StringBuilder一般会比需要的内存分配的多一些
  //开发人员也可以指定StringBuilder要分配多少内存
  // 2个重要属性 Length 字符串的实际长度 Capacity 字符串存储单元的最大长度(也就是最多可以占多少内存)
  //这样,字符串的替换的效率就提高了,因为可以在StringBuilder分配的空余空间中进行操作.
  //但是,删除增加字符串时,仍有一定影响,因为这样会涉及到存储大小的变
  //通常如果增加一个字符串,超出本对象大小时,对象内存会自动翻版,以保证所需

  //第二个参数是指字符对象最大数,通常应设一个尽量可能大的数.以确保不会重新扩展内存
  StringBuilder sbStr = new StringBuilder( "Hello from all the guys atWrox Press. " , 150 );
  Console.WriteLine( "Hello from all the guys atWrox Press".Length + "字符串大小");
  //很明显字符串大小是36,而我们给sb对象分配了150个字符的大小空间,这样我们假定我们append的新字符不会超出150-36
  //那么sb对象将不会重新分配内存,我们的效率也就提高了
  sbStr.Append( " Hello Aladdin!");
  Console.WriteLine( sbStr );

  //但是多次频繁替换文件,才能真正用到sb所带来的效率,同样是上面的加密小例,我们用sb对象执行

  for ( int i = ''z'' ; i >= ''a'' ; i-- )
  {
  char old = ( char )i;
  char new1 = ( char )( i + 1 );

  sbStr = sbStr.Replace( old , new1 );
  }


  for ( int i = ''Z'' ; i >= ''A'' ; i-- )
  {
  char old = ( char )i;
  char new1 = ( char )( i + 1 );

  sbStr = sbStr.Replace( old , new1 );
  }

  Console.WriteLine( sbStr + "加密后" );
  //以上代码使用了StringBuilder类的Replace方法,他不用在过程中复制字符串,效率会很高。

  //StringBuilder类中除了Length 与 Capacity两个重要属性之外,还有一个MaxCapacity
  //MaxCapacity是指最大的字符个数,一般默认是与int类型大小一样。int.MaxValue!
  //不过可以显示的给定他的值,但是如果给定的最大值比指定的字符串空间大小小的话,会有一个异常
  //例:我们把MaxCapacity给定为100,而Capacity是150,这时会有一个异常

  StringBuilder sb = new StringBuilder( 100 ,50 );


  //总结: 一般StringBuilder用于字符串的操作,而;String用与字符串的展示!


  Console.ReadLine();
  }
  }
}


 

  • 上一篇资讯: ado.net如何读取Excel
  • 下一篇资讯: .net获得excel的sheet名字
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号