【大话String】P352

1.1【记忆】

  1:String对象不以newobj指令创建,而是ldstr指令创建;

  2:两次创建内容相同的String对象可以指向相同的内存地址(保存在托管堆中,相同的只是一个指向托管堆的地址。)

  3:字符串恒等性(Immutability),是指字符串一经创建,就不可改变,对字符串的任何修改不会影响到原来的String对象,而是 重新创建String对象,这就可以解析substring方法了;(这样的方法:Insert,Substring,ToUpper等常用方法)

  4:String对象从应用解读体现了值类型语义,而从内存角度实现为引用类型存储,位于托管堆;

  5:恒等性一定程度上,成就了字符串驻留;

  6:CLR内部维护了一个哈希表,来管理其创建的大部分string对象(散列表,这个大部分就包括动态生成的字符串);

  7:string strD = strC + "def",(这个要注意,strD 是动态生成的字符串,好ibuhui被添加到哈希表中维护的);

  8:手动启用字符串驻留:Intern,IsInterned;

  9:Parse可以报异常,TryParse返回out的bool值,Conver为null时不会抛出异常,而是返回0;

  10:string strPath = @"C:\",意思是把引号的内容都当成字符串,这样就不用转义操作了"\";在写正则表达式时经常使用这个;

  11:按值传递和按引用传递(ref与out)(类似于在页面中使用DropDownList,把这个实例传递给后端,在后端直接设值,这个页面的ddl也是会改变的,当要给ddl设置一个树形的时候特别有用,因为很多地方都可能用到这个控件)

1.2【string和StringBuilder的性能对比】

  1:在写代码的时候一直没有注意过这两者有什么不同,一般都是随着性子写的,一般使用StringBuilder都是使用它的Append和 AppendFormat来格式化字符串,其实string也是可以的,所以我一直没有关心过什么时候使用stirng,什么时候使用 StringBuilder。

  2:本书给出的建议就是在进行大量循环的时候需要使用StringBuilder。

  3:值得注意的是,在实例化StringBuilder的时候可以传递一个数值作为一个池(个人理解),书里面的描述就是容量,也就是StringBuilder所维护的字符数组的长度,默认的使用是16,可以根据需要来设置该值。

  4:StringBuilder在使用上,最好指定合适的容量值。

1.3【实践】

  1:Split方法很常用,就是用来分隔包括某个字符的字符串,并返回一个数组;

  2:string s = String.Join(",",chars[]);类似这样的操作,刚好是跟上面的逆运算,用某个字符来组合数组的值,并返回一个字符串;

  3:如果我们不想使用数组,而使用泛型,那就有自己写方法了;

  4:Stepwath可以用来计算执行的时间,在性能测试的时候用得着;

  5:StartsWith,EndsWith,这两个方法很有用,一个很经典的使用就是这样的业务逻辑,我们的系统中一般都有组织获取目录这样 的树形结构,而我们在设计数据库的时候通常都是使用字符串来表示这些编码,Code和他的父亲ParentCode,比如[001,0]; [001001,001];[001002,001];[001001001,001001];这样的记录,而如果我们要判断两条记录的关系,我们该如何 呢?有一个办法就是先判断这两个字符串长度是否相等,如果是,再判断是否相等;如果不是,再通过两个字符串一个个对比,这是一个很笨的方法,我以前就这么 笨过,看到这里,你已经猜到可以使用了StartsWith了,靠,代码美观了太多了。

转载于:https://www.cnblogs.com/yzenet/archive/2012/01/30/2331623.html

【你必须知道的.NET】:【大话String】相关推荐

  1. [你必须知道的.NET]第二十二回:字符串驻留(上)---带着问题思考

    发布日期:2008.8.27 作者:Anytao  © 2008 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 走钢丝的人,在刺激中体验快感.带着问题思考,在问 ...

  2. 你必须知道的.NET(第2版)

      王涛 编著 ISBN 978-7-121-14128-7   2011年7月出版 定价:79.00元 16开 548页 宣传语:以深入浅出的笔法,触摸.NET底层和框架的有趣角落,了解.NET平台 ...

  3. 一本你必须知道的.net

    <你必须知道的.NET> 作者简介:王涛 微软C# MVP,高级软件工程师,机械工程硕士,主要研究方向为.NET底层架构和企业级系统应 用.现就职于某软件公司负责架构设计.软件开发和项目管 ...

  4. [你必须知道的.NET]第二十一回:认识全面的null

    <你必须知道的.NET>网站 | Anytao技术博客  [你必须知道的.NET]第二十一回:认识全面的null 发布日期:2008.7.31 作者:Anytao © 2008 Anyta ...

  5. python语言必背代码-Python新手必须知道的25条知识点

    原标题:Python新手必须知道的25条知识点 1.到底什么是Python?你可以在回答中与其他技术进行对比 下面是一些关键点: Python是一种解释型语言.这就是说,与C语言和C的衍生语言不同,P ...

  6. 看《你必须知道的.NET》有感--工厂模式的另类解读

    最近在看博客园里的推荐的<你必须知道的.NET>,对里面有一段关于银行的客户和职员的安排的程序有点兴趣.这里我把他改了下,促进理解: Code   1using System;   2us ...

  7. [你必须知道的.NET]第二十七回:interface到底继承于object吗?

    <你必须知道的.NET>网站 | Anytao技术博客  [你必须知道的.NET]第二十七回:interface到底继承于object吗? 发布日期:2009.03.05 作者:Anyta ...

  8. 【转】[你必须知道的.NET]第二十一回:认识全面的null

    引用自:http://www.cnblogs.com/anytao/category/155694.html 作者:Anytao . 说在,开篇之前 null. nullable.??运算符.null ...

  9. [你必须知道的.NET]第三十二回,,深入.NET 4.0之,Tuple一二

    anytao.net | <你必须知道的.NET>网站 | Anytao技术博客  发布日期:2009.06.01 作者:Anytao © 2009 Anytao.com ,Anytao原 ...

  10. 《你必须知道的.NET》,前言

    <你必须知道的.NET>网站 | Anytao技术博客  <你必须知道的.NET>,前言 发布日期:2008.3.29 作者:Anytao © 2008 Anytao.com ...

最新文章

  1. C#循环语句(for循环)
  2. 解决连接mysql报错1130
  3. Python常见数据结构整理,分享给你们
  4. 机器学习算法一般步骤
  5. qml 连线_将QML信号连接到C 11 lambda插槽(Qt 5)
  6. SqlServer系列笔记——游标
  7. lesson 4 Show Messages in Messagebox
  8. yolov5环境配置-Anaconda3 + Pytorch1.8 + Cuda10.2 + cuDnn8.2.0 + opencv3.2.0
  9. Beyond Compare软件进行代码比对
  10. 天津智慧路灯+“新基建”示范区建设启动、沪苏通长江公铁大桥
  11. linux 下的字体引擎(xtt freetype xfs xft)
  12. 003之可想而知(一)
  13. Code For Better 谷歌开发者之声 ——Tensorflow与深度学习
  14. 微星B450mMortar迫击炮+AMD速龙3000GE安装Windows7 SP1并使用UEFI+Nvme启动
  15. Java中的package(包)
  16. Android8.1系统添加屏幕左侧边缘向右滑退出当前页面功能
  17. 单片机学习笔记-数码管的显示
  18. IC验证必备的数字电路基础知识(一):数字逻辑基础
  19. YTU 2451: 股市风云
  20. VirtualBox:无法访问共享文件夹

热门文章

  1. java Hello World程序分析(翻译自Java Tutorials)
  2. http 使用curl发起https请求 error 60 51
  3. 【iOS】Image图片属性之Render as Template Image
  4. [swift] LeetCode 21. Merge Two Sorted Lists
  5. 蓝桥杯 ALGO-34算法训练 纪念品分组(贪心算法+排序)
  6. 1061. Dating (20)-PAT甲级真题
  7. web.xml 中的listener、 filter、servlet 加载顺序及其详解
  8. centos7设置输入密码三次错误锁定账号
  9. ue4 C++ 编程 通过三个点的位置算出夹角
  10. DBA+北京社群第三次线下沙龙归来