鉴于通用类型是字节数组,整数等,我想对通用类型做不同的事情。
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#的最佳实践是什么?
谢谢。
答案 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。