iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#中如何使用String对象
  • 709
分享到

C#中如何使用String对象

2023-06-17 23:06:22 709人浏览 八月长安
摘要

C#中如何使用String对象,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。把一个字符串变量赋给另一个字符串时,就会创建一个全新的C# String对象,就是说这个时候就会有两

C#中如何使用String对象,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

把一个字符串变量赋给另一个字符串时,就会创建一个全新的C# String对象,就是说这个时候就会有两个对象,比如:

classStringExc  {  publicstaticvoidMain()  {  strings1="originalstring";  strings2=s1;//注意此时会创建一个新对象  Console.WriteLine("s1is"+s1);  Console.WriteLine("s2is"+s2);  s1="changedstring";  Console.WriteLine("s1isnow"+s1);  Console.WriteLine("s2isnow"+s2);  }  }

输出结果为:

s1isoriginalstring  s2isoriginalstring  s1isnowchangedstring  s2isnoworiginalstring

也就是说,改变s1的值并没有对s2造成任何影响,这与我们平时所说的引用类型的行为正好相反。当用值"original string"初始化s1时,就在堆上分配了一个C# String对象。在初始化s2时,引用也指向这个对象,所以s2的值也是"original string"。但是现在要改变s1的值,而不是替换原来的值时,堆上就会为新值分配一个新对象。s2变量仍然指向原来的对象,所以它的值没有改变。

另外,如果我们像下面这样:

stringstr1="abc";  stringstr2="abc";

当我们用System.Object.Equals(str1,str2)比较时,返回值是true;按理说str1和str2应该指向不同的空间,应该返回false才对啊。原来Equals有三个版本:

publicoverrideboolEquals(object);  publicboolEquals(string);  publicstaticboolEquals(string,string);

前两个实例方法内部会调用CompareOrdinal静态方法,它会字符串中的各个字符,如果相等就返回true。第三个首先会检查两个引用指向的是否是同一个对象,如果是,就返回true,不再去比较各个字符了。

其实CLR使用了一种叫字符串驻留的技术,对于

string   str1="abc";  string   str2="abc";

当CLR初始化时,会创建一个内部的散列表,其中的键为字符串,值为指向托管堆中字符串的引用。刚开始,散列表为空,JIT编译器编译方法时,会在散列表中查找每一个文本常量字符串,首先会查找"abc"字符串,并且因为没有找到,编译器会在托管堆中构造一个新的指向"abc"的C# String对象引用,然后将"abc"字符串和指向该对象的引用添加到散列表中。

接着,在散列表中查找第二个"abc",这一次由于找到了该字符串,所以编译器不会执行任何操作,代码中再没有其它的文本常量字符串,编译器的任务完成,代码开始执行。执行时,CLR发现***个语句需要一个"abc"字符串引用,于是,CLR会在内部的散列表中查找"abc",并且会找到,这样指向先前创建的C# String对象的引用就被保存在变量s1中,执行第二条语句时,CLR会再一次在散列表中查找"abc",并且仍然会找到,指向同一个C# String对象的引用会被保存在变量s2中,到此s1和s2指向了同一个引用,所以System.Object.Equals(s1,s2)就会返回true了。

看完上述内容,你们掌握C#中如何使用String对象的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: C#中如何使用String对象

本文链接: https://www.lsjlt.com/news/294831.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#中如何使用String对象
    C#中如何使用String对象,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。把一个字符串变量赋给另一个字符串时,就会创建一个全新的C# String对象,就是说这个时候就会有两...
    99+
    2023-06-17
  • C#中如何使用 FileSystemWatcher对象
    这期内容当中小编将会给大家带来有关C#中如何使用 FileSystemWatcher对象,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。属性:Name——这个属性中使事件被提交的文件的名称。其中并不包含文件...
    99+
    2023-06-17
  • C++中如何使用栈对象
    这篇文章将为大家详细讲解有关C++中如何使用栈对象,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。这的确不错,相对而言,这个比C#中的using 关键字(dispose模式),以及Java中的...
    99+
    2023-06-17
  • C++中如何使用函数对象
    C++中如何使用函数对象,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。适合对属于基本数据类型的对象排序,它使用<作为排序比较规则,第2种语法则是根据指定排序规则comp来...
    99+
    2023-06-17
  • C++如何切割String对象的方法
    目录核心函数find函数substr函数数值转换输入样例输出样式C++相较于Java,Python 并没有提供的字符串分割的函数split,因此需要自己进行编写。在实际的工作中这一功...
    99+
    2024-04-02
  • C#中怎么创建String对象
    本文小编为大家详细介绍“C#中怎么创建String对象”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#中怎么创建String对象”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。创建 String 对象您可以使用...
    99+
    2023-06-17
  • JavaScript中的String对象怎么使用
    这篇文章主要介绍“JavaScript中的String对象怎么使用”,在日常操作中,相信很多人在JavaScript中的String对象怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScrip...
    99+
    2023-06-30
  • C++中如何使用类对象构造函数
    C++中如何使用类对象构造函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。对于普通类型的对象来说,他们之间的复制是很简单的,自己定义的类的对象同样是对象,谁也...
    99+
    2023-06-17
  • vue中string如何转为json对象
    这篇文章主要介绍了vue中string如何转为json对象的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue中string如何转为json对象文章都会有所收获,下面我们一起来看看吧。vue中string转为j...
    99+
    2023-06-29
  • JavaScript中对象如何使用
    这期内容当中小编将会给大家带来有关JavaScript中对象如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 介绍JavaScript 中,对象是 键/值...
    99+
    2024-04-02
  • C++11的std::future对象如何使用
    这篇“C++11的std::future对象如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++11的std::fu...
    99+
    2023-07-05
  • C++面向对象中构造函数如何使用
    这篇“C++面向对象中构造函数如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++面向对象中构造函数如何使用”文章吧...
    99+
    2023-07-04
  • c++中如何使用类和对象掌握目标
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-14
  • 如何在Android应用中使用C++对Bitmap对象进行处理
    这篇文章将为大家详细讲解有关如何在Android应用中使用C++对Bitmap对象进行处理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。步骤如下:a.编写JNI接口函数//java接口函数p...
    99+
    2023-05-31
    android bitmap c++
  • C#使用Newtonsoft.Json中的JObject对象
    案例1 json {     "Name": "Jack",     "Age": 34,     "Colleagues": [{         "Name": "Tom",  ...
    99+
    2024-04-02
  • C#中DirectoryEntry对象怎么使用
    DirectoryEntry对象在C#中用于操作和管理目录服务(也称为Active Directory)中的目录项。下面是一些常用的...
    99+
    2023-09-15
    C#
  • Javascript中如何使用Date对象
    Javascript中如何使用Date对象,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、Date对象是什么Date 对象用于处理日期和时间...
    99+
    2024-04-02
  • JavaScript中如何使用RegExp对象
    这篇文章主要介绍“JavaScript中如何使用RegExp对象”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript中如何使用RegExp对象”文章能...
    99+
    2024-04-02
  • Pandas中GroupBy对象如何使用
    这篇“Pandas中GroupBy对象如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Pandas中GroupBy对象...
    99+
    2023-07-02
  • JavaScript中window对象如何使用
    本篇内容介绍了“JavaScript中window对象如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作