检查类型
我想检查,方法的参数已,为了给其类型 我确定与所希望的类型的方法内的变量:检查类型
public static Object getFileContent(String filename, Type returntype)
{
if (returntype.GetType().Equals(string))
{
// do something
}
}
这不工作。我能做些什么来检查返回类型是string
还是List<string>
?
returntype == typeof(string)
不需要调用GetType
,因为你已经有一个类型。 (GetType
无论如何不会返回有用的答案,它会返回typeof(Type))。
使用typeof
操盘
if (returntype.Equals(typeof(string)))
{
// do something
}
或只是
if (returntype == typeof(string))
{
// do something
}
为什么不只是'=='在这里? – 2013-03-19 15:50:18
@MarcGravell我刚刚开始那个;) – 2013-03-19 15:51:28
if(returnType == typeof(String) || return == typeof(List<String>))
//logic
我相当喜欢is
运营商自己:
if (returntype is string)
{
// do something
}
returntype的类型总是'Type'。问题是这个'Type'是否等于'typeof(string)'。 – Corak 2013-03-19 15:52:30
再次说明:此语法不存在。您正在将C#的''作为''''''操作符与VB的'TypeOf ... Is ...'操作符混合在一起。 – 2013-03-19 15:52:32
好的,严重:“is”有什么问题?我想你也不使用'as'? – 2013-03-19 15:52:36
在这种情况下,你只是想检查该returntype
相同类型string
。当比较Type
情况下,最好的途径是简单地使用==
操作
return returntype == typeof(string);
如果您有与COM接口来处理,虽然你将要使用的,而不是==
return returntype.IsEquivalentTo(typeof(TheInterface));
这个IsEquivalentTo
方法是必要的,因为COM中的嵌入式互操作类型将显示为不同的Type
实例。 IsEquivalentTo
方法将检查它们是否代表相同的基础类型。
难道你不会更好使用这里的通用方法,'公共静态T getFileContent(字符串文件名)'? –
RoadieRich
2013-03-19 15:56:02