如何确定变量的类型?(不是对象的类型)

Col*_*nic 8 .net c# immediate-window visual-studio

我在Visual Studio的即时窗口中.有一个变量p.我怎样才能推断出变量 的类型p

我尝试p.GetType()但返回了对象 的类型p.就我而言,这是一种非常特殊的类型(例如,有时候ChessPlayer,有时候TennisPlayer).我想知道变量的类型,即.确定变量可用方法的类型p.


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

Fre*_*eak 5

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

要获得特定类型的精确副本,您需要执行此操作

if (p.GetType() == typeof(YourDesiredType))
Run Code Online (Sandbox Code Playgroud)

如果你想知道p是否是你想要的类型的实例那么

if (p is YourDesiredType)
Run Code Online (Sandbox Code Playgroud)

或者你可以试试这个

YourDesiredType ydp = p as YourDesiredType;
Run Code Online (Sandbox Code Playgroud)

在这种情况下(因为我不确定在您的方案中是否可能)当OP想要知道编译类型然后我只建议使用通用列表

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


Col*_*nic 4

惊讶这是如此困难,最后我写了这个方法,它似乎给出了正确的答案。

public static class Extensions
{
    public static Type GetVariableType<T>(this T instance)
    {
        return typeof(T);
    }
}
Run Code Online (Sandbox Code Playgroud)

用法示例:

void Main()
{
    IList x = new List<int>{};
    x.GetVariableType().Dump();
}
Run Code Online (Sandbox Code Playgroud)

印刷System.Collections.IList