C#中字符串的一般性和特殊性

作者:luobao 时间:2023-03-23 19:06:07 

string 类型是C#的基元类型之一,它是一个引用类型,对应FCL中的System.String类型。string 类型和普通的引用类型相比有什么样的相同点和不同点呢?

1、字符串具有固定不变性,字符串存在于System.String命名空间下,通过反编译工具我们可以看到:

C#中字符串的一般性和特殊性

字符串中只有两个只读的属性,没有可设置的属性,所以说string 类型的实例具有固定不变性。只要是改变了字符串的内容,系统就会在堆内存中生成一个全新的字符串。其实这一点并不能算作是字符串的特殊性,这和普通的引用类型没什么区别,只是string类型在定义的时候,没有创建可以写的属性,所以这只能算作是字符串的一般特性。

 演示代码如下:


class Program
{
static void Main(string[] args)
{
 string str1 = "Hi";
 string str2 = str1;
 str2 = "Hello"; //这个操作相当于给实例str2重新new了一个实例
 Console.WriteLine("str1的值为:{0}", str1);
 Console.WriteLine("str2的值为:{0}", str2);
 Console.ReadKey();
}
}

运行结果如下:

C#中字符串的一般性和特殊性

2、字符串中驻留池的概念,这是string类型特有的,所以这是字符串的特殊性。当我们声明的字符串和堆中已存在的某个字符串的值一样时,不会再在堆中开辟空间,创建新的实例,而是将当前声明字符串的引用指向已经存在的实例。

C#中字符串的一般性和特殊性

来源:http://www.cnblogs.com/luobao/p/6432278.html

标签:C#,字符串
0
投稿

猜你喜欢

  • 解决@Autowired注入static接口的问题

    2022-01-02 03:16:29
  • spring-boot使用AOP统一处理日志

    2023-06-09 05:12:35
  • Android使用DocumentFile读写外置存储的问题

    2023-10-23 01:58:54
  • C# 创建高精度定时器的示例

    2023-03-09 12:35:58
  • java 动态增加定时任务示例

    2023-07-29 06:56:00
  • C#中string.Empty和null的区别详解

    2023-05-19 16:01:45
  • jdk线程池的实现

    2023-07-05 18:44:35
  • 控制Android LED灯颜色的代码实例

    2022-12-30 02:53:20
  • Android中TextView自动适配文本大小的几种解决方案

    2022-05-28 09:08:01
  • 关于C++数组中重复的数字

    2023-01-21 03:29:43
  • Effective Java (异常处理)

    2022-09-24 12:17:29
  • android视频截屏&手机录屏实现代码

    2022-12-10 15:20:31
  • java实现解析二进制文件的方法(字符串、图片)

    2023-04-18 19:07:51
  • Unity3D获取当前键盘按键及Unity3D鼠标、键盘的基本操作

    2023-06-01 18:01:45
  • mybatis错误之in查询 <foreach>循环问题

    2023-11-17 01:10:09
  • Java简易登录注册小程序

    2023-01-23 09:16:13
  • 浅谈HTTP使用BASIC认证的原理及实现方法

    2021-07-18 01:36:16
  • Jmeter接口登录获取参数token报错问题解决方案

    2021-09-13 10:34:31
  • AsyncTask官方文档教程整理

    2023-07-31 20:25:08
  • Java 如何将网络资源url转化为File文件

    2023-05-28 09:23:37
  • asp之家 软件编程 m.aspxhome.com