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框架中的反射与特性是两种强大的工具,它们极大地扩展了编程的可能性,使代码更加灵活和可扩展。本文将深入探讨这两个概念以及如何在实际应用程序中有效地利用它们。 首先,我们来理解什么是反射。反射是.NET...
### .NET Framework 反射特性的使用详解 在.NET Framework中,反射是一个强大的特性,它允许程序在运行时检查和调用类型的信息。这在很多场景下非常有用,比如动态加载组件、创建对象实例以及调用方法等。本文将...
理解它们的特性和转换方法对于开发人员来说是非常基础且实用的知识。 首先,`HexString`(十六进制字符串)是一种将二进制数据表示为十六进制数字的字符串形式。每个字节由两个十六进制字符表示,因此一个32位的二...
### .NET中的高级特性 #### 6.1 委托 ##### 6.1.1 委托的基本原理 在.NET框架中,委托提供了一种安全且强大的方法回调机制,这对于创建灵活且可扩展的应用程序至关重要。委托在.NET编程中扮演着极其重要的角色,...
1. 变量与数据类型:VB.NET支持多种内置数据类型,如Integer、Double、String等,理解变量的声明、赋值和类型转换是编程的基础。 2. 控制结构:包括条件语句(If...Then...Else)、循环语句(For...Next、While......
### ASP.NET MVC5 新特性:Attribute路由使用详解 #### 一、Attribute路由简介与启用 在探讨Attribute路由之前,我们先来明确一下它的定义。**Attribute路由**是一种新的路由机制,它允许开发者直接在控制器的方法...
《精通.Net核心技术高级特性》是一本深度探讨.Net技术体系的权威著作,旨在帮助读者全面掌握.Net平台上的核心高级特性。本书以深入浅出的方式讲解,适合各个层次的开发者阅读,无论是初学者还是经验丰富的专业人士,...
### ASP.NET MVC5 新特性详解 #### 一、Attribute路由 **Attribute路由**是ASP.NET MVC5中的一个重要新特性,它允许开发者通过属性的方式定义路由规则,与传统的在`RouteConfig.cs`文件中集中配置路由相比,...
VB.NET是.NET框架的一部分,它引入了许多新特性,如强类型系统、垃圾回收机制、面向对象编程、泛型、匿名方法和LINQ等。VB.NET的语法简洁明了,使得程序员能够快速地编写代码。在VB.NET中,你可以创建Windows Forms...
【标签】"hpsocket.net HPSocket .net socket tcp"暗示了HPSocket.Net可能是一个扩展了.NET Framework的Socket功能的库,提供了更高级别的接口和特性,如多线程处理、并发连接管理、消息模板等。HPSocket.Net可能...
1. **数据类型**:VB.NET中的数据类型(如Integer、Double、String等)需要转换为Java相应的类型(如int、double、String等)。 2. **控制流语句**:VB.NET的If...Then...Else、For...Next、Do...Loop等需要转换为...
这个例子将深入探讨如何利用JSON.NET处理JSON数据,包括序列化、反序列化、以及一些高级特性。 首先,JSON.NET的核心功能是将.NET对象转换为JSON字符串(序列化)和将JSON字符串解析成.NET对象(反序列化)。例如,...
.NET 获取枚举 DescriptionAttribute 描述信息性能改进的多种方法 在 ASP.NET 编程中,获取枚举 DescriptionAttribute 描述信息是一个常见的需求。DescriptionAttribute 特性可以用于 many places,例如枚举,通过...
最新版本的JSON.NET会提供更多的特性、改进和错误修复。定期检查并更新到最新版,确保能获取最佳的性能和兼容性。 四、源码与编译: 在提供的压缩包中,"Source"目录可能包含了JSON.NET的源代码,用户可以查看、...
需要注意的是,实际应用中可能涉及事务管理、缓存策略、动态SQL等更复杂的功能,需要进一步学习MyBatis.NET的高级特性。此外,随着.NET Core的普及,也可以考虑使用MyBatis.NET的.NET Core版本,以适应现代Web开发的...
在VB.NET (ASP.NET)环境中,使用AJAX技术可以实现页面的部分刷新,提高用户体验。本文将详细介绍如何在后台引用AJAX函数,以VS2010 (VB.NET)作为开发工具,SQL Server 2000作为数据库进行演示。 首先,我们需要在...
3. **统一的类型系统**:VB.NET与.NET Framework的类型系统紧密集成,提供了丰富的内置类型,如Integer、Double、String等,并支持强类型检查。 4. **事件驱动编程**:VB.NET中的控件支持事件处理,使得用户界面的...
- **动态网页技术**:ASP.NET的核心特性之一是能够在服务器端执行.NET代码,动态生成HTML。这使得开发者能够处理复杂的业务逻辑、数据库访问等任务,而这些通常无法在客户端浏览器上完成。 - **加法计算器示例**:...
本资源摘要提供了 C#/ASP.NET 面试题目宝典,涵盖了面向对象编程、ADO.NET、C# 语言特性、ASP.NET 等多个方面的知识点。 面向对象编程 1. 面向对象的语言具有继承性、多态性、封装性。 2. 类成员有三种可访问形式...