8

我在 Visual Studio 的即时窗口中。有一个变量p。如何推断变量 p的类型?

我试过p.GetType()了,但这会返回object p的类型。就我而言,这是一种非常具体的类型(例如,有时ChessPlayer,有时TennisPlayer)。我想知道变量的类型,即。确定变量上可用的方法的类型p


编辑:我认为这是一件合理的事情。我正在尝试检查变量p,但我不知道它是!通常在 Visual Studio 中,我只需将鼠标悬停在变量上,它就会告诉我它的类型,或者我键入.并且自动完成列出它的方法。然而,这些在即时窗口中都不起作用,我所拥有的只是这个变量p,我不知道它是什么或者我能用它做什么:(

4

5 回答 5

5

c#为此提供了许多方法:)

对于特定类型的确切副本,您需要执行此操作

if (p.GetType() == typeof(YourDesiredType))

如果你想知道 p 是否是 yourdesiredtype 的一个实例,那么

if (p is YourDesiredType)

或者你可以试试这个

YourDesiredType ydp = p as YourDesiredType;

在这种情况下(因为我不确定在您的场景中是否有可能)当 OP 想知道编译类型时,我只建议为此使用通用列表

因为通过保持类型安全列表,每个人都可以轻松跟踪其类型

于 2012-11-21T11:11:13.793 回答
4

很惊讶这太难了,最后我写了这个方法,似乎给出了正确的答案。

public static class Extensions
{
    public static Type GetVariableType<T>(this T instance)
    {
        return typeof(T);
    }
}

示例用法:

void Main()
{
    IList x = new List<int>{};
    x.GetVariableType().Dump();
}

印刷System.Collections.IList

于 2012-11-21T12:16:11.850 回答
1

作为使用即时窗口的替代方法,如果您只想查看变量的类型,您可以简单地添加一个变量监视并在监视窗口中检查类型。

于 2017-04-03T05:46:43.020 回答
0
System.Object.GetType()

这将返回变量的类型,因为这个类位于每个类派生的层次结构的顶部。

您还可以检查 typeof 函数以获取给定实例的确切类型。

于 2012-11-21T11:11:12.700 回答
0

我想你可能需要这个

if (p is ChessPlayer)
{
    ChessPlayer cp = (ChessPlayer)p;

    //Use ChessPlayer methods
}
于 2012-11-21T11:15:09.673 回答