在这网站上,我阅读了以下代码,我认为这是错误的:
string s = "Geeks";
Type a1 = typeof(string);
Type a2 = s.GetType();
Console.WriteLine(a1 == a2);
//output: True现在,如果我错了,请纠正我,因为我是C#的新手。
因此,a1==a2应该是一个引用比较,并且应该返回false,因为有两个不同的Type对象。
发布于 2022-07-16 20:27:35
虽然这对于一般引用类型是正确的,但是可以重载equality操作符来比较内容。
此外,就像System.Object.GetType所说的:
对于具有相同运行时类型的两个对象x和y,Object.ReferenceEquals(x.GetType()、y.GetType())返回true。
发布于 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
https://stackoverflow.com/questions/73007427
复制相似问题