c#"是"与存储在变量中的类型进行比较 -

时间:2018-04-27 11:08:52

标签: c# types

我想改变我在比较中的类型"是"在运行时声明,我认为这是不可能的"是"如果我理解this Q& A对,但我不完全理解那里给出的答案,

有人可以举例说明如何使用可更改类型进行工作类型比较吗?

与我在这里尝试的相似://不起作用(至少不是我的c#;-))

    public static Type T;

    public class A { }
    public class B { }

    public static void Main(string[] args)
    {

        A AObject = new A();

        T = typeof(A);

        Console.WriteLine(AObject is T); // schould print true if it worked

        T = typeof(B);

        Console.WriteLine(AObject is T); // should print false if it worked

        Console.Read();
    }

关联作为关闭此问题的原因的问题在主题问题上被认为不是很好我同意这一点,我对一个简单的主题有一个简单的问题,我想要一个简单的答案,而不是一个提示和trics指南,这甚至不适合这种Q& A格式。

我得到了那么简单的答案非常感谢!

3 个答案:

答案 0 :(得分:2)

T.UnderlyingSystemType == typeof(A)

是另一种比较类型的方法

答案 1 :(得分:1)

这可以通过获取对象的类型并将其与字符串值进行比较来完成。您不需要Type成员。

using System;

namespace ConsoleApplication1
{
    class Program
    {
        public static Type T; //Not needed

        public class TypeA
        {
            public int testProp { get; set; }

            public string testPropTwo { get; set; }
        }

        public class TypeB
        {
            public decimal testProp { get; set; }

            public bool testPropTwo { get; set; }
        }

        static void Main(string[] args)
        {
            TypeA typeA = new TypeA();
            TypeB typeB = new TypeB();

            //Read type of user input. Mimicking dynamic value
            var inputType = Console.ReadLine();

            //Comparison with types.
            Console.WriteLine(typeA.GetType().Name == inputType);

            Console.WriteLine(typeB.GetType().Name == inputType);

            Console.ReadKey();
        }
    }
}

答案 2 :(得分:0)

在本质上,我所喜欢的是这样的:

    public static bool isObjOfType(Object OBJ, Type Type)
    {
        return OBJ.GetType().Name == Type.Name;
    }

    public static bool isObjOfType(Object OBJ, string Type)
    {
        return OBJ.GetType().Name == Type;
    }