我在Visual Studio的即时窗口中。有一个变量p
。如何推断变量的类型 p
?
我尝试p.GetType()
,但返回对象 p
的类型。就我而言,这是一种非常具体的类型(例如,有时为ChessPlayer
,有时为TennisPlayer
)。我想知道变量的类型,即。确定变量p
上可用方法的类型。
编辑:我认为这是一件合理的事情。我正在尝试检查变量p
,但我不知道它是!通常在Visual Studio中我只是将鼠标悬停在变量上,它告诉我它的类型,或者我输入.
并且自动完成列出了它的方法。然而,这一切都不适用于即时窗口,我所拥有的只是这个变量p
我不知道它是什么或我能用它做什么:(
答案 0 :(得分:5)
c#提供了许多方法:)
要获得特定类型的确切副本,您需要执行此操作
if (p.GetType() == typeof(YourDesiredType))
如果你想知道p是否是你想要的类型的实例那么
if (p is YourDesiredType)
或者你可以试试这个
YourDesiredType ydp = p as YourDesiredType;
就像在这种情况下(因为我不确定在你的场景中是否可能)当OP想要知道编译类型然后我只建议使用通用列表 < / p>
因为通过保持类型安全列表,每个人都可以轻松跟踪其类型
答案 1 :(得分:3)
感到非常困难,最后我写了这个方法,似乎给出了正确的答案。
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
答案 2 :(得分:1)
作为使用即时窗口的替代方法,如果您只想查看变量的类型,只需添加变量监视并在监视窗口中检查类型。
答案 3 :(得分:0)
System.Object.GetType()
这将返回变量的类型,因为此类位于层次结构的顶部,从中派生每个类。
您还可以检查typeof函数以获取给定实例的确切类型。
答案 4 :(得分:0)
我想你可能需要这个
if (p is ChessPlayer)
{
ChessPlayer cp = (ChessPlayer)p;
//Use ChessPlayer methods
}