具有泛型的C#简单类型

时间:2018-10-04 15:54:03

标签: c# types switch-statement

鉴于通用类型是字节数组,整数等,我想对通用类型做不同的事情。

    public void GenericType<T>(T Input)
    {
        switch (typeof(T))
        {
            case (typeof(byte[])):
                break;
            case (typeof(int)):
            case (typeof(float)):
            case (typeof(long)):
                break;
            case (typeof(string)):
                break;
            default:
                throw new Exception("Type Incompatability Error");
                break;
        }
    }

Sandbox.cs(12,13): error CS0151: A switch expression of type `System.Type' cannot be converted to an integral type, bool, char, string, enum or nullable type

添加:

我的特定案例有一些通用的代码和一些特定的代码。我也有一个我实际上没有传递T变量的地方。到目前为止,如果有变量,解决方案就可以工作。

    public void GenericType<T>()

不是经验丰富的人,C#的最佳实践是什么?

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用pattern matching通过switch进行此操作:

switch(Input)
{
   case int i:
      // do something with i
   case string x:
      // do something with x
}

答案 1 :(得分:1)

您可以尝试

if (Input is int i) { DoSomething(i) ; }
else if (Input is long l) { DoSomething(l) ; }

最好?也许。作品?是的。

在此示例中,您实际上是在调用System.Object GenericType。