首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >价值比较还是参考比较?

价值比较还是参考比较?
EN

Stack Overflow用户
提问于 2022-07-16 20:23:05
回答 2查看 50关注 0票数 1

网站上,我阅读了以下代码,我认为这是错误的:

代码语言:javascript
复制
string s = "Geeks";
 
Type a1 = typeof(string);
 
Type a2 = s.GetType();
 
Console.WriteLine(a1 == a2);

//output: True

现在,如果我错了,请纠正我,因为我是C#的新手。

  1. "Geeks“是一个字符串对象。
  2. Type object (String)返回Type对象。
  3. s.GetType()返回一个Type对象。
  4. a1和a2是数据类型的引用类型变量。

因此,a1==a2应该是一个引用比较,并且应该返回false,因为有两个不同的Type对象。

EN

回答 2

Stack Overflow用户

发布于 2022-07-16 20:27:35

虽然这对于一般引用类型是正确的,但是可以重载equality操作符来比较内容。

有这样一个过载

此外,就像System.Object.GetType所说的:

对于具有相同运行时类型的两个对象x和y,Object.ReferenceEquals(x.GetType()、y.GetType())返回true。

票数 5
EN

Stack Overflow用户

发布于 2022-07-20 12:23:21

谢谢你的回答,但我想我找到了解决办法。表示另一种类型(字符串、int等)的类类型的每个对象都必须是唯一的,也就是说,类类型的两个对象不能代表同一应用程序中的相同类型。因此,Type ( string )创建一个表示字符串的Type对象,然后s.GetType()不创建另一个表示字符串的Type对象,而是引用第一个对象。

“对于任何类型,每个应用程序域只有一个type实例。”

表示类型的Type对象是唯一的;也就是说,两个type对象引用引用相同的对象当且仅当它们表示相同的类型。

https://learn.microsoft.com/en-us/dotnet/api/system.type?view=netstandard-1.6

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73007427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档