c#中字符串的比较
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#中字符串的比较,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1434字,纯文字阅读大概需要3分钟。
内容图文
![c#中字符串的比较](/upload/InfoBanner/zyjiaocheng/765/719a73e575a24346953ae30d9ac6d606.jpg)
因此,正如我们所知,对象(在当前示例中 – 字符串)相对于它们在堆中的引用进行比较.因此,如果:
string a = "something";
string b = "something";
bool isEqual = (a == b);
将a的值放在字符串池中,并且在找到b的值与在池中搜索时相同时,将为变量b分配相同的引用.好的,这很清楚.但是如果发生了什么:
string a = "somethingNew";
bool isEqual = (a == "somethingNew");
这些比较文字如何在内存中表示(如果有的话)以及在这种情况下如何完成整个比较过程?
解决方法:
可以相对于堆中的引用来比较对象.如果这是它们本地使用的方式,大多数对象都不会比较人类友好,所以像字符串这样的东西实际上实现了相等运算符的重载更直观. string通过首先检查内存引用(通过首先调用object.ReferenceEquals(object,object))来比较相等(通过相等==运算符),如果不是相同的引用,则回退到比较字符串中的字符,而不管内存地点.
诸如“somethingNew”之类的字符串文字被编译为一个变量,在.NET调用实习内存池时引用该字符串值…这是一种具有相同值(意味着相同的大小写和字符)的所有字符串的方法作为指向实习池中单个引用的指针,而不是每个引用都有相同值的内存分配.这样可以节省内存,但需要在实习池中查找值.这是因为字符串是不可变的(只读),因此通过使用or =运算符连接来更改字符串的值,否则实际上会创建一个全新的字符串.默认情况下,字符串变量不会被中断,除非它们是文字.
您的示例中的字符串比较将在初始字符串相等对象引用检查上成功,并返回true而不进行任何进一步的相等性分析.这将发生,因为您的变量是字符串文字,因此实习(具有相同的内存地址).如果它们没有被实习,那么无论内存位置如何,比较都将回归到字符比较.
您可以使用string.Intern(string)手动实习非文字字符串
内容总结
以上是互联网集市为您收集整理的c#中字符串的比较全部内容,希望文章能够帮你解决c#中字符串的比较所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。