ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

(十八) C#基础学习之值类型&引用类型&String的深入学习

2021-02-21 03:32:04  阅读:236  来源: 互联网

标签:String C# value 类型 int bool 字符串 之值 string


一、值类型和引用类型

1. 定义:

值类型: int/double/bool/char/decimal/struct/enum

引用类型: string、自定义类、数组

 

2. 区别:

  * 在内存上存储的地方不一样:值类型存储在栈中,引用类型存储在堆中

     如下图所示:值类型int直接将值10储存在栈中。而引用类型string将值"123"存在堆中。但引用类型也会在栈中开辟空间,存的是string的地址0x001001

  * 传递方式不同

 

二、字符串string深入学习

1. 当给字符串重新赋值之后,旧的值不会被销毁,而是重新开辟一个空间存储新的值

如下图所示,当我们将int值重新赋值,原来的值10将会被从栈中移除

但是当我们重新给string赋值“孙全”,旧的值“张三“并不会从堆中移除,而是给新值”孙全“开辟了新的地址。只不过栈中的旧地址0x001001会被移除,换成”孙全“对应的新地址0x010101

(至于旧的值”张三”,会在程序结束后被Garbage Collection 清除)

(或者为了解决大量垃圾占用内存的问题,可以使用StringBuilder代替string:  StringBuilder sb = new StringBuilder() )

 

2. 字符串string的不可变性

  - C#中字符串有一个重要特性:不可变性。字符串一旦声明,只可通过索引读取,不可修改。

  - 我们可以将string看做一个char类型的只可读 数组

例子:

将字符串“abcdef”的第一个值变成b,即“bbcdef”

如果直接如下图操作,错误提示:read only.(string只可读)

 

正确的做法:

输出结果:bbcdef

 

3. 字符串常用的方法

 - Length 获取字符串长度

 - ToUpper() 将字符转大写

 - ToLower() 将字符转为小写

 - Equals(字符串1,StringComparison.字符串2)比较两个字符串,可以忽略大小写

 - Split() 分割字符串

 - string Replace(string old, string new): 替换;将old值替换成new的

 - bool Contain(string value): 判断字符串中是否包含...

 - bool StartsWith(): 判断字符串是否以...开始

 - bool EndsWith(): 判断字符串是否以...结束

 - string Substring(int startindex): 取从startsindex开始到最后的子字符串

 - int IndexOf(string value): 取子字符串value第一次出现的位置

 - LastIndexOf(string value)

标签:String,C#,value,类型,int,bool,字符串,之值,string
来源: https://www.cnblogs.com/qitanzhideyu/p/14424057.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有