如何检查变量在c#中保存实例或类型

时间:2014-09-17 06:35:42

标签: c# windows-store-apps

我有一个班级Test

public class Test { }

现在我有一个变量object1,其中包含Test的实例。

object object2 = new Test();

// some code

object2 = typeof(Test);

object2将接受不同场景中Test类的类型和实例。如何查看它的值。即Test的实例或Test的类型

5 个答案:

答案 0 :(得分:5)

if (object2 is Test) { ... }
if (object2 is Type) { ... }

但不要这样做。

答案 1 :(得分:1)

未经测试,您可以查看

if (object2 is Test) // .. we have an instance of Test
else if (object2 == typeof(Test)) // we have the second case

顺便说一句:这是一个糟糕的设计我认为应该引入一个变量用于完全一个目的。

答案 2 :(得分:1)

if (object2 is Type) {...} //当object2的类型为Type

if (object2 is Test) {...} //当object2的类型为Test时..因此持有一个实例

答案 3 :(得分:1)

var object2Type = object2 as Type;
if (object2Type != null)
{
    // Do something
}
else
{
    var object2Test = (Test)object2;
    // Do something else
}

答案 4 :(得分:1)

您也可以使用我的库(link):

object2.DetermineType()
       .When((Test target) => { /* action to do */ })
       .When((Type target) => { /* action to do */ })
       .Resolve();

object2.DetermineType()
       .When<Test>(target => { /* action to do */ })
       .When<Type>(target => { /* action to do */ })
       .Resolve();

但如果你必须以这种方式确定类型,可能你的设计不好。