易截截图软件、单文件、免安装、纯绿色、仅160KB

C#字符串浅析

    刚开博不久,就很想写点东西,但是出于种种原因都没动手。有了博客总不能空着,就在琢磨着写些什么。刚好学习了字符串的一些东西,做了下笔记感觉还不错,拿出来晒晒...
    先说说字符串操作的性能问题。C#中的字符串操作,用得也比较多,大家都不陌生。反正就是声明一个字符串变量,然后使劲地赋值,置空,再赋值(对一个字符串变量多次的赋值)。这时候会出现效率问题。why?其实字符串是一个不可变的数据类型,一旦对字符串对象进行了初始化,该对象就不能改变了。也就是说给字符串申请了一个空间,该空间就存在了,不会变化。如果再给字符串赋值,实际就是再申请一块空间,然后把原来的丢到,等待垃圾回收。举个例子:
string str=”hello! ”;
str+=”what is your name.”;
上述代码执行情况是:声明str时为str声明一个能够存储hello!的空间,然后把地址给str。执行+=时,把hello!与what is your name.合并,并申请一个能够存储合并后字符串的空间再把地址给str。先前声明存放hello!的空间,等待垃圾回收处理。
    再来谈谈StringBuilder类。StringBuiler通常分配的内存会比需要的更多。开发人员可以选择显式指定StringBuilder要分配多少内存,但如果没有显式指定,存储单元量在默认情况下就根据StringBuilder初始化时的字符串长度来确定。属性:
Length指定字符串的实际长度;
Capacity是字符串占据存储单元的最大长度。
对字符串的修改就在赋予StringBuilder实例的存储单元中进行,这就大大提高了添加子字符串和替换单个字符的效率。删除或插入子字符串仍然效率低下,因为这需要移动随后的字符串。当扩展字符串容量时,才需要给字符串分配新内存,才可能移动包含整个字符串。在添加额外的容量时,StringBuilder如果检测到容量超出,且容量没有设置新值,就会使自己的容量翻倍。StringBuilder并不总能提高性能。StringBuilder类基本上应在处理多个字符串时使用。但如果只是连接两个字符串,使用System.String会比较好。
    最后说下什么是字符串的复合格式设置。可能描述会有点多,现就自己说点,再引用点别人的东西《C#高级编程(6版)》,说明下复合格式设置中格式字符串是怎么解析的。格式字符串本身大都由要显示的文本组成,但只要有要格式化的变量,它在参数列表中的下标(下标放在{}中)就必须放在括号中。在括号中还可以有与该项的格式相


相关文档:

C#删除XML结点的简单例子

接上一篇
删除原genre属性,删除leixing=love的所有结点。
1 原xml文件 bookstore.xml
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
  <book genre="love" ISBN="1234123">
    <title>who am i </title>
    <author>who</aut ......

C#——C#中C/C++程序员要注意的问题


1、C/C++程序员请注意,不能在case语句不为空时“向下执行”。
2、值类型和引用类型之间的区别:C#的基本类型(int,char等)都是值类型,是在栈中创建的。而对象是引用类型,创建于堆中,需要使用关键字new。
3、在C#中通过实例访问静态方法或成员变量是不合法的,会生成编译器错误。但是我们可以通过声明他 ......

利用vs.net快速开发windows服务(c#)

在很多应用中需要做windows服务来操作数据库等操作,比如
(1)一些非常慢的数据库操作,不想一次性去做,想慢慢的通过服务定时去做,比如定时为数据库备份等
(2)在.net Remoting中利用windows服务来做Host
利用vs.net我们可以在几分钟之内建立其windows服务,非常简单
下面说一下步骤
1. 新建一个项目
2. 从一个可 ......

C# copydata消息处理

http://blog.csdn.net/carl2380/archive/2009/11/18/4826973.aspx
简介:
本文着重讲述了如果用WM_COPYDATA消息来实现两个进程之间传递数据.
进程之间通讯的几种方法:
在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。常用的方法有
  使用内存映射文件
  通过共享内存DLL共享内存
  使 ......

用C#发送邮件的几种方法

1 JavaScript发送邮件   
<script language="javascript">
        function SendMail() {
            document.location = "mailto:seat@wicresoft.com;?subject=Feedback";
   &n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号