Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取对象的实际类型_C# - Fatal编程技术网

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-是的,我明白你的意思。只是看起来这不是我们想要的。