选择数据类型作为参数?

时间:2015-08-22 00:25:30

标签: c#

有没有办法将数据类型(特别是:int,text,byte,char)指定为参数? 例如:(这不起作用)

public void myclass(System.Object ChoosenType)
{
    switch (ChoosenType)
        case System.Text:
        case System.Byte:
        case System.Int32:
        case Sustem.Char:
}

2 个答案:

答案 0 :(得分:2)

您可以使用Type课程。但是,由于无法打开Type对象,因此无法使用switch语句。

  

CS0151开关表达式或大小写标签必须是bool,char,string,integral,enum或相应的可空类型

您还需要更改比较方法,因为类型的“类型名称”不是Type对象。您必须使用typeof

public void someMethod(Type theType)
{
    if (theType == typeof(Int32))
    {
    }
    else if (theType == typeof(Char))
    {
    }
    ...
}

另请注意,System.Text不是类型,而是命名空间。另一方面,System.String 类型。

答案 1 :(得分:1)

另外值得注意的是,除了使用Type类之外,您还可以将System.Int32替换为别名int。这是有效的,因为int实际上只是一个"昵称"对于完全限定的System.Int32类。

前 -

public void myClass(Type x)
{
    if (x == typeof(int))
    {
        Console.WriteLine("int");
    }
    else if (x == typeof(bool))
    {
        Console.WriteLine("bool");
    }
    else if (x == typeof(string))
    {
        Console.WriteLine("string");
    }
    //additional Type tests can go here
    else Console.WriteLine("Invalid type");
}