最近看了李天平老师的《.net深入体验与实战精要》,里面提到了String类型的一些东西,我一开始是看不明的,但是后面通过与李老师

通了email之后,豁然开朗。下面就再一次写写有关String类型的一些东西吧。

首先还是要给大家看一句话:string虽然为引用类型,但是(== 和 !=)是为了比较 string 对象(而不是引用)的值。

还是先看看代码,如果大家可以完全看懂明白里面的意思,我觉得大家就已经掌握了90%的String类型了。

代码

string s1 = " te " ;
string s2 = " te " ;
string s3 = new string ( new char [] { ' t ' , ' e ' });
string s4 = new string ( new char [] { ' t ' , ' e ' });
第一种情况:
object o1 = s3;
object o2 = s4;
Console.WriteLine(o1 == o2);
Console.WriteLine(o1.Equals(o2));
第二种情况:
object o1 = s1;
object o2 = s2;
Console.WriteLine(o1 == o2);
Console.WriteLine(o1.Equals(o2));

究竟会出现什么结果呢???

首先先解释一下

string s1 = "te";
                string s2 = "te";
                string s3 = new string(new char[] { 't', 'e' });
                string s4 = new string(new char[] { 't', 'e' });

如图所示,s1,s2,s3,s4的在栈中的内容就是所指向的字符串在堆中的地址,"te"在堆中的地址是1111,但是大家注意一下,c#中是没有给 s2

分配内存的,也就是s1,s2都是同一内存地址的别名,而c#分别给s3,s4分配了内存,而(==)是判断栈中的内容是否相等的。也就是判断 s1s2s3s4在栈中

的内容是否相等,显然,他们的值都是1111,所以s1==s2==s3==s4的。

而object o1=s3和object o2=s4,就是初始化一个对象,他们所指的地址分别是s3和s4的地址,也就是栈中的地址,分别是1101和1102,

所以o1!=o2的,因为o1和o2的内存地址显然不同。

再看看object o1=s1和object o2=s2,s1和s2都是同一个内存地址1100,所以在初始化一个object对象时,o1和o2的内存地址都是1100,

所以o1==o2的。

相信大家都已经知道了上面的答案了吧?希望我这个解释之后,能让大家对String类型有更深一步的了解,也希望大家可以和我交流。

ps:顺便附上面的答案给大家参考

代码

string s1 = " te " ;
string s2 = " te " ;
string s3 = new string ( new char [] { ' t ' , ' e ' });
string s4 = new string ( new char [] { ' t ' , ' e ' });
第一种情况:
object o1 = s3;
object o2 = s4;
Console.WriteLine(o1 == o2); // false
Console.WriteLine(o1.Equals(o2)); // true
第二种情况:
object o1 = s1;
object o2 = s2;
Console.WriteLine(o1 == o2); // true
Console.WriteLine(o1.Equals(o2)); // true

转载于:https://www.cnblogs.com/cookies9/archive/2010/05/26/1744764.html

三探String类型相关推荐

  1. Redis(三)——string类型数据库操作

    目录 string类型 保存 设置键值 设置键值及过期时间,以秒为单位 设置多个键值 追加值 获取 获取:根据键获取值,如果不存在此键则返回nil 根据多个键获取多个值 查找 查找键,参数⽀持正则表达 ...

  2. java对象转换String类型的三种方法

    **一.采用Object.toString() **toString方法是java.lang.Object对象的一个public方法.在java中任何对象都会继承Object对象,所以一般来说任何对象 ...

  3. Redis源码-String:Redis String命令、Redis String存储原理、Redis String三种编码类型、Redis字符串SDS源码解析、Redis String应用场景

    Redis源码-String:Redis String命令.Redis String存储原理.Redis String三种编码类型.Redis字符串SDS源码解析.Redis String应用场景 R ...

  4. 理解C#中的string类型

    作者:未知 目的 本文的目的在于揭示和DOTNET及C#相关的一些常见的和不常见的问题.在这些问题中我的第一篇文章和string数据类型有关,string数据类型是一种引用类型,但是当和其他引用类型比 ...

  5. 【F#2.0系列】介绍String类型

    F#的string类型是.NET的System.String的缩写形式,代表了一连串的Unicode UTF-16字符. 使用String 几种不同的String书写方式: 示例 种类 类型 &quo ...

  6. string类型加减_测试人员应该知道的Redis知识(四) String

    一.概述 完整的说,应该是Binary-safe string,二进制安全字符串.从官网内容我们可以看到,String类型是最简单的一种数据类型,和Memcached的类型一致,一个key对应一个va ...

  7. [译]ElasticSearch数据类型--string类型已死, 字符串数据永生

    原文链接: https://www.elastic.co/blog/s... Text vs. keyword 随着ElasticSearch 5.0的到来, 同时也迎来了该版本的重大特性之一: 移除 ...

  8. 十四、Redis三种特殊类型之一Geospatial

    一.概述 redis除了提供了五大基本数据类型String.List.Set.Hash.Zset,还有3个比较特殊的数据类型,Geospatial.Hyperloglog.Bitmap,这三个数据类型 ...

  9. Redis入门第二篇【存储数据结构之string类型】

    tags: Redis title: Redis入门第二篇[存储数据结构之string类型] Redis存储的数据结构 Redis支持的数据结构有好几种: It supports data struc ...

最新文章

  1. Windows驱动开发 - 设备对象初步学习
  2. c语言首尾指针相同 则,6.C语言指针练习题.doc
  3. openstack 使用集锦
  4. python爬虫post请求_Python爬虫之GET和POST请求
  5. hybris impex里忽略某列数据的语法
  6. 编码规范 | Java函数优雅之道(上)
  7. java中中的赋值运算符_Java中的赋值运算符
  8. windbg入门之旅:(2)一个简单的integer divide-by-zero exception分析案例
  9. 【C语言】malloc,free(),strerror函数
  10. 【Blender】导出地图任意位置的3D模型
  11. 追星女孩彩虹屁情话合集100条 ✔︎ (三)
  12. 北京爷们儿跟北京妞儿 倍儿靠谱儿-----女人篇
  13. 基于AM5728核心板的户外工作站可靠性和便捷性设计
  14. lol手游账号服务器,英雄联盟手游
  15. P1757 通天之分组背包题解
  16. 给高科技强国的后来者埋下的痛
  17. Spring Boot入门系列(六)Spring Boot如何整合Mybatis【附详细步骤】
  18. centos内核是linux吗,CentOS各版本的内核版本分别是什么?
  19. [读书笔记]《一本书读懂财报》
  20. HTML+CSS画同心圆

热门文章

  1. Python 爬虫:喜马拉雅FM音频(这个还能不载,试了一下其它下载工具都不行了)
  2. 绿色邮件系统_论坛邮件群发_论坛邮件群发asp
  3. JAVAJSP婴幼儿用品销售系统JSP母婴用品购物系统JSP儿童玩具JSP网购系统儿童JSP玩具销售JSP商场销售系
  4. java jxl mergecells_java 中JXL操作Excel实例详解
  5. 心动测试哪个软件好用,心理测试:4个婚礼现场,哪个最让你心动?测TA会疼爱你多久!...
  6. 中老年女装洞察报告:2900亿的中老年女装生意|60加研究院
  7. AI也能作曲!OpenAI神经网络能生成任何流派音乐
  8. mysql朗读,Android技术分享-文字转语音并朗读
  9. 自定义拍照时 拍照界面_搞笑GIF:拍照时压倒性优势只需要一片柠檬
  10. 如何构建自己的网游基本构架