我有一个班级Test
public class Test { }
现在我有一个变量object1
,其中包含Test
的实例。
object object2 = new Test();
// some code
object2 = typeof(Test);
object2
将接受不同场景中Test
类的类型和实例。如何查看它的值。即Test
的实例或Test
的类型
答案 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();
但如果你必须以这种方式确定类型,可能你的设计不好。