有没有办法将数据类型(特别是:int,text,byte,char)指定为参数? 例如:(这不起作用)
public void myclass(System.Object ChoosenType)
{
switch (ChoosenType)
case System.Text:
case System.Byte:
case System.Int32:
case Sustem.Char:
}
答案 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");
}