`
jameszou
  • 浏览: 70166 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

.NET 里 String 的特性

阅读更多

String是指System.String,同时string关键字也是System.String的别名。这里要说的特性都是一些让不理解的人容易犯错的特性。

String的第一个特性就是它是引用类型,但很多时候表现起来却像值类型,这是第一个让人容易犯错的地方。String有一个不可破坏的特性(immutable),或者简单叫做只读特性,这意味任何改变String的操作其实都没有改变原本那个String,而是创建了一个新的String实例同时让变量的引用(指针)指向了新String。这个特性让String在某些方面表现得像值类型,例如:

  • 作为函数的传入参数时表现得像值类型,也就是如果你传入了一个String,然后在函数内改变了它的值,并不会对函数外面该值原本的引用有任何的影响。
  • 把一个String赋值给另一个String,改变其中任何一个String另外一个都不会受影响。

然而这不影响String作为一个引用类型的本质,例如它可以是null,也可以用于lock。

String的第二个特性就是字符串池(String Pool),也叫做拘留池。程序运行时所有的String其实都存放在一个池中,任何一个特定内容的String在池中仅会有一个副本,所以多个内容相同的String对象其实都是引用同一个字符串副本。这特性意味着你操作两个String如果内容可能相同你就要格外小心了,例如:

  • 在执行lock的时候,如果放进去的是一个String,那么当两个线程中该String内容一致时其中一个就会阻塞,因为这两个String其实引用同一个字符串副本。

在了解到这些String特性后,编写程序时遇到String的传递和比较就要格外小心咯,想清楚String的行为会是怎么样的,再决定如何写代码。

From: http://www.cnblogs.com/cathsfz/archive/2006/10/22/536472.html

分享到:
评论

相关推荐

    .NET再谈String

    我们在实际的应用中,字符串比较有着很大的应用,String.Compare()。 这个方法的本质是将整个string拆开,然后比较其中的每个字符。也就是在笔试题中常常遇到的,...于是我们可以根据字符串的驻留特性去想想其他方法。

    asp.net知识库

    .NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎...

    十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备

    虽然说学习ASP.NET不需要任何ASP基础,但是我觉得如果大家ASP不会,还是先看一下【十天学会ASP教程】,大家所需要了解的不是ASP的程序怎么写,而是怎么构建服务器,怎么使用HTML表单,同时对SQL语句有一个基础和理解...

    [ASP.NET.AJAX编程参考手册(涵盖ASP.NET.3.5及2.0)].(美)霍斯拉维.扫描版.pdf

    2.5 ASP.NET AJAX String类型扩展 2.5.1 endsWith 2.5.2 startsWith 2.5.3 trim 2.5.4 格式化 2.6 ASP.NET AJAX Error类型扩展 2.6.1 create 2.6.2 popStackFrame 2.6.3 popStackFrame的内部机理 2.7 小结 第3章 ...

    亮剑.NET:.NET深入体验与实战精要清晰版及源码

     1.2 .net的几个特性  1.3 万丈高楼平地起:面试者必会  1.4 .net的面向对象之门  1.5 .net开发几把小刀  1.6 visual studio.net 2008 实战  本章常见技术面试题  常见面试技巧之面试前的准备  本章...

    亮剑.NET深入体验与实战精要.part2

     1.2 .net的几个特性  1.3 万丈高楼平地起:面试者必会  1.4 .net的面向对象之门  1.5 .net开发几把小刀  1.6 visual studio.net 2008 实战  本章常见技术面试题  常见面试技巧之面试前的准备  本章...

    亮剑.NET深入体验与实战精要2

    1.2 .NET的几个特性 7 1.3 万丈高楼平地起:面试者必会 9 1.3.1 C#介绍 10 1.3.2 命名空间 10 1.3.3 C#语法格式要点 10 1.3.4 变量 12 1.3.5 类型推断 12 1.3.6 变量的作用域 13 1.3.7 常量 16 1.3.8 流程控制 16 ...

    ASP.NET 控件的使用

    9.3.6 使用QueryStringParameter对象 282 9.3.7 使用SessionParameter对象 284 9.4 通过程序执行SqlDataSource命令 285 9.4.1 添加ADO.NET参数 285 9.4.2 执行Insert、Update和Delete命令 286 9.4.3 执行select命令 ...

    StackExchange开源.Net ORM框架 Dapper.NET.zip

     public string Name { get; set; }  public float? Weight { get; set; }  public int IgnoredProperty { get { return 1; } } }  var guid = Guid.NewGuid(); var dog = ...

    ASP.NET.4揭秘

    20.1 c#和vb.net的新特性720 20.1.1 理解自动属性721 20.1.2 理解初始化器721 20.1.3 理解类型推断723 20.1.4 理解匿名类型724 20.1.5 理解泛型724 20.1.6 理解lambda表达式726 20.1.7 理解扩展方法729 20.1.8 理解...

    亮剑.NET深入体验与实战精要3

    1.2 .NET的几个特性 7 1.3 万丈高楼平地起:面试者必会 9 1.3.1 C#介绍 10 1.3.2 命名空间 10 1.3.3 C#语法格式要点 10 1.3.4 变量 12 1.3.5 类型推断 12 1.3.6 变量的作用域 13 1.3.7 常量 16 1.3.8 流程控制 16 ...

    ASP.NET的网页代码模型及生命周期

    从上述代码可以看出,其格式与类库、编写类的格式相同,这也说明了.aspx页面允许使用面向对象的特性,如多态、继承等。但是ASP.NET代码隐藏页模型的运行过程比单文件页模型要复杂,运行示例图如图4-4所示。 图4-4 ...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    10.4.6 dataset和datatable对象的高级ado.net特性 418 10.5 使用通用提供程序模型 420 10.6 ado.net中的连接池 422 10.7 transactions类和system.transactions名称空间 423 10.7.1 创建事务 423 10.7.2 ...

    零基础学ASP.NET 3.5 PDF 完整版part1

    《零基础学ASP.NET3.5》共分为5篇20章,从基本的软硬件知识人手,让读者对程序有个整体的印象,随后介绍了VC6开发环境的搭建、C++语言的基本数据类型、C++语言的表达式,并分别从面向过程编程、面向对象编程和泛型...

    零基础学ASP.NET 3.5 PDF 完整版part2

    零基础学ASP.NET3.5》共分为5篇20章,从基本的软硬件知识人手,让读者对程序有个整体的印象,随后介绍了VC6开发环境的搭建、C++语言的基本数据类型、C++语言的表达式,并分别从面向过程编程、面向对象编程和泛型编程...

    .net_笔试题目

    部分内容为: [.NET(C#)] ASP页面有时显示比较慢,因为服务器端代码是解释性的不是编译的. 由于ASP代码不是结构化的所以难于维护,加上ASP不支持...结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关!

    亮剑.NET深入体验与实战精要.part3

     1.2 .net的几个特性  1.3 万丈高楼平地起:面试者必会  1.4 .net的面向对象之门  1.5 .net开发几把小刀  1.6 visual studio.net 2008 实战  本章常见技术面试题  常见面试技巧之面试前的准备  本章...

    ASP.NET在MVC中MaxLength特性设置无效的解决方法

    本文实例讲述了ASP.NET在MVC中MaxLength特性设置无效的解决方法。分享给大家供大家参考。具体分析如下: 一、问题: 在ASP.NET MVC项目中,给某个Model打上了MaxLength特性如下: 代码如下:public class SomeClass ...

    亮剑.NET深入体验与实战精要.part4(完)

     1.2 .net的几个特性  1.3 万丈高楼平地起:面试者必会  1.4 .net的面向对象之门  1.5 .net开发几把小刀  1.6 visual studio.net 2008 实战  本章常见技术面试题  常见面试技巧之面试前的准备  本章...

Global site tag (gtag.js) - Google Analytics