C# 如何获取对象的实际类型
我想得到一个对象的实际类型,即使我将其转换为其他类型,例如我有一个C# 如何获取对象的实际类型,c#,C#,我想得到一个对象的实际类型,即使我将其转换为其他类型,例如我有一个整数并将其转换为对象,是否有办法找到方法?.NET将.GetType()作为每个对象的一部分。你可以用它来做一些关于反射的事情 C#还具有模式匹配功能: if (obj is int intVal) { // use as an integer } 当您将一个类型中的任何值强制转换或装箱到System.Object时,它仍然在封面下具有相同的值。.NET将.GetType()作为每个对象的一部分。你可以用它来做一些关于反
整数
并将其转换为对象
,是否有办法找到方法?.NET将.GetType()
作为每个对象的一部分。你可以用它来做一些关于反射的事情
C#还具有模式匹配功能:
if (obj is int intVal)
{
// use as an integer
}
当您将一个类型中的任何值强制转换或装箱到System.Object
时,它仍然在封面下具有相同的值。.NET将.GetType()
作为每个对象的一部分。你可以用它来做一些关于反射的事情
C#还具有模式匹配功能:
if (obj is int intVal)
{
// use as an integer
}
当您将一个类型中的任何值强制转换或装箱到
System.Object
时,它仍然隐藏在封套下具有相同的值。您可以使用GetType().Name
获取类型的名称,但首选使用GetType()
,因为文本比较可能会导致类型问题。如果您希望原始值以未装箱的形式显示,而不是转换为已知类型,例如(int)x
,如果您将一个对象转换为另一个类型,则您正在创建一个全新的对象。如果将一个对象强制转换为另一个类型,则引用的对象与新类型相同。可以使用GetType().Name
获取类型名称,但首选使用GetType()
,因为文本比较可能会导致类型问题。如果您希望原始值以未装箱的形式显示,而不是转换为已知类型,例如(int)x
,如果您将一个对象转换为另一个类型,则您正在创建一个全新的对象。如果您将一个对象强制转换为另一种类型,则您引用的对象与新类型相同。@Performalj我的第一句话应该包括“具有相同的值”->“具有相同的类型”@Enigmativity如果具有相同的值,则具有相同的类型,否则将不相同value@SirRufo-是的,我明白你的意思。我的第一句话应该包括“具有相同的值”->“具有相同的类型”@Enigmativity如果它具有相同的值,那么它也具有相同的类型,否则它将不相同value@SirRufo-是的,我明白你的意思。只是看起来这不是我们想要的。