从对象变量中获取类名

dsc*_*arr 4 c# c#-4.0

我想从Object变量获取指向的类.

例如,如果我有一个StringBuilder对象的实例,我随后将Object变量设置为,我可以知道Object变量指向StringBuilder对象吗?

例:

StringBuilder sbText = New StringBuilder();
Object oMyObject = sbText;
// How can I determine that oMyObject points to an instance of StringBuilder object using only oMyObject
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用typeof(oMyObject)或者oMyObject.GetType()在我能想到的每一种组合中,并且仍然不断提出Object.似乎应该有一个相当直接的方式来做到这一点,可能有,但我没有找到它.

我必须不同意将此标记为他们提供链接的重复问题的用户.我的问题的标题可能不是那么清楚(我现在已经改变了一点)并且两者的答案可能涉及相同的方法但是询问另一个问题的用户正在寻找实例化的方法一个对象与另一个对象的类型相同.当我所拥有的只是Object类型的变量时,我只是在寻找获取类名称的方法.我永远不会想到Reed通过查看这个问题而提供的答案,我不记得它曾在搜索过这个网站或更广泛的Google搜索.

Ree*_*sey 11

GetType()应该System.Type在运行时提供适当的对象.

例如,这打印"StringBuilder":

StringBuilder sbText = new StringBuilder();
Object oMyObject = sbText;

Console.WriteLine(oMyObject.GetType().Name);
Run Code Online (Sandbox Code Playgroud)

请注意,如果您只想检查特定的类类型,is(或as)通常比获取以下内容更干净Type:

StringBuilder sbText = new StringBuilder();
Object oMyObject = sbText;

//...

StringBuilder sb = oMyObject as StringBuilder;
if (sb != null)
{
    // oMyObject was a StringBuilder - you can use sb as needed:
    sb.AppendText("Foo");
}
Run Code Online (Sandbox Code Playgroud)